<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Linux入门和初体验 | VitePress</title>
    <meta name="description" content="A VitePress site">
    <link rel="preload stylesheet" href="/notebook/assets/style.3dbfd0c2.css" as="style">
    
    <script type="module" src="/notebook/assets/app.8aaa4cbe.js"></script>
    <link rel="preload" href="/notebook/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/notebook/assets/chunks/framework.1336c4e5.js">
    <link rel="modulepreload" href="/notebook/assets/chunks/theme.20cddc0c.js">
    <link rel="modulepreload" href="/notebook/assets/Linux_Linux基础.md.4b0bf394.lean.js">
    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-255ec12d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-ae3e3f51></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-ae3e3f51> Skip to content </a><!--]--><!----><header class="VPNav" data-v-255ec12d data-v-7e5bc4a5><div class="VPNavBar has-sidebar" data-v-7e5bc4a5 data-v-0937f67c><div class="container" data-v-0937f67c><div class="title" data-v-0937f67c><div class="VPNavBarTitle has-sidebar" data-v-0937f67c data-v-86d1bed8><a class="title" href="/notebook/" data-v-86d1bed8><!--[--><!--]--><!--[--><img class="VPImage logo" src="/notebook/Vue.png" alt data-v-8426fc1a><!--]--><!--[-->任硕的文档<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-0937f67c><div class="curtain" data-v-0937f67c></div><div class="content-body" data-v-0937f67c><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-0937f67c><!--[--><!----><div id="docsearch"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-0937f67c data-v-7f418b0f><span id="main-nav-aria-label" class="visually-hidden" data-v-7f418b0f>Main Navigation</span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>Java学前端</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/HTML+JS.html" data-v-2f2cfafc><!--[-->HTML+JS<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/CSS.html" data-v-2f2cfafc><!--[-->CSS<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/Vue2+%E7%BB%84%E4%BB%B6.html" data-v-2f2cfafc><!--[-->Vue2+组件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/Vue3+%E7%BB%84%E4%BB%B6.html" data-v-2f2cfafc><!--[-->Vue3+组件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/Java%E5%AD%A6%E5%89%8D%E7%AB%AF/React.html" data-v-2f2cfafc><!--[-->React<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>软件测试</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/%E6%B5%8B%E8%AF%95%E5%9F%BA%E7%A1%80.html" data-v-2f2cfafc><!--[-->测试基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/%E5%8E%8B%E5%8A%9B%E6%B5%8B%E8%AF%95.html" data-v-2f2cfafc><!--[-->压力测试<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>多线程</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E5%B9%B6%E5%8F%91%20&amp;%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-2f2cfafc><!--[-->基础篇<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E5%B9%B6%E5%8F%91%20&amp;%20%E5%A4%9A%E7%BA%BF%E7%A8%8B/%E5%B9%B6%E5%8F%91%E5%AE%8C%E5%96%84.html" data-v-2f2cfafc><!--[-->进阶篇<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>开发工具</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/Chrome.html" data-v-2f2cfafc><!--[-->Chrome<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/IDEA%E5%9F%BA%E7%A1%80.html" data-v-2f2cfafc><!--[-->IDEA基础<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/IDEA%E6%8F%92%E4%BB%B6.html" data-v-2f2cfafc><!--[-->IDEA插件<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/IDEA/VS%20Code.html" data-v-2f2cfafc><!--[-->VS Code<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f418b0f data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-a7b5672a><span class="text" data-v-a7b5672a><!----><span data-v-a7b5672a>消息中间件</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-a7b5672a><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><div class="items" data-v-e7ea1737><!--[--><!--[--><div class="VPMenuGroup" data-v-e7ea1737 data-v-69e747b5><!----><!--[--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/RabbitMQ.html" data-v-2f2cfafc><!--[-->RabbitMQ<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/RocketMQ.html" data-v-2f2cfafc><!--[-->RocketMQ<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka.html" data-v-2f2cfafc><!--[-->Kafka<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-69e747b5 data-v-2f2cfafc><a class="VPLink link" href="/notebook/%E6%B6%88%E6%81%AF%E4%B8%AD%E9%97%B4%E4%BB%B6/Canal.html" data-v-2f2cfafc><!--[-->Canal<!--]--></a></div><!--]--><!--]--></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-0937f67c data-v-f6a63727><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-f6a63727 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-0937f67c data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/renshuo123/renshuo123.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="#" aria-label="twitter" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></a><a class="VPSocialLink no-icon" href="https://github.com/" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg t="1676028692954" class="icon" ...</path></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-0937f67c data-v-40855f84 data-v-a7b5672a><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-a7b5672a><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-a7b5672a><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-a7b5672a><div class="VPMenu" data-v-a7b5672a data-v-e7ea1737><!----><!--[--><!--[--><!----><div class="group" data-v-40855f84><div class="item appearance" data-v-40855f84><p class="label" data-v-40855f84>Appearance</p><div class="appearance-action" data-v-40855f84><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-40855f84 data-v-82b282f1 data-v-f3c41672><span class="check" data-v-f3c41672><span class="icon" data-v-f3c41672><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-82b282f1><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-82b282f1><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-40855f84><div class="item social-links" data-v-40855f84><div class="VPSocialLinks social-links-list" data-v-40855f84 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/renshuo123/renshuo123.github.io" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><a class="VPSocialLink no-icon" href="#" aria-label="twitter" target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M23.953 4.57a10 10 0 01-2.825.775 4.958 4.958 0 002.163-2.723c-.951.555-2.005.959-3.127 1.184a4.92 4.92 0 00-8.384 4.482C7.69 8.095 4.067 6.13 1.64 3.162a4.822 4.822 0 00-.666 2.475c0 1.71.87 3.213 2.188 4.096a4.904 4.904 0 01-2.228-.616v.06a4.923 4.923 0 003.946 4.827 4.996 4.996 0 01-2.212.085 4.936 4.936 0 004.604 3.417 9.867 9.867 0 01-6.102 2.105c-.39 0-.779-.023-1.17-.067a13.995 13.995 0 007.557 2.209c9.053 0 13.998-7.496 13.998-13.985 0-.21 0-.42-.015-.63A9.935 9.935 0 0024 4.59z"/></svg></a><a class="VPSocialLink no-icon" href="https://github.com/" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-f80f8133><svg t="1676028692954" class="icon" ...</path></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-0937f67c data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-255ec12d data-v-5cfd5582><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-5cfd5582><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-5cfd5582><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-5cfd5582>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-5cfd5582 data-v-18201f51><button data-v-18201f51>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-255ec12d data-v-845b8fc6><div class="curtain" data-v-845b8fc6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-845b8fc6><span class="visually-hidden" id="sidebar-aria-label" data-v-845b8fc6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Java</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E6%96%B0%E7%89%B9%E6%80%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E9%9B%86%E5%90%88.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java集合</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Java/Java%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Java高级</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible has-active" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Linux</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Linux%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Linux基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Linux%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Linux新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/Shell.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Shell脚本</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/%E5%AE%9E%E7%94%A8%E8%84%9A%E6%9C%AC.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>实用脚本</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Linux/%E8%BD%AF%E4%BB%B6%E9%83%A8%E7%BD%B2.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>软件部署</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Nginx</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E5%AE%9E%E6%88%98%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>实战篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Nginx/%E9%9D%A2%E8%AF%95%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>面试篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SSM</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/Maven.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Maven</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/Spring.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Spring</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/SpringMVC.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringMVC</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/SSM/SpringBatch.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringBatch</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringBoot</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E5%BA%94%E7%94%A8%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>应用篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E6%96%B0%E7%89%B9%E6%80%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>新特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/3%E3%80%81SpringBoot/%E8%BF%90%E7%BB%B4&amp;%E5%8E%9F%E7%90%86.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>运维&原理</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringCloud</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringCloud</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BF%85%E5%A4%87/Sentinel.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Sentinel</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>SpringSecurity</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/SpringSecurity/%E9%AB%98%E7%BA%A7%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>SpringSecurity高级篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Mybatis & MybatisPlus</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/Mybatis.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Mybatis</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/MybatisPlus.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MybatisPlus</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/Mybatis&amp;MybatisPlus/JPA.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JPA</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>Git & ChatGPT</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Git.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Git</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Github.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Github</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/ChatGPT.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ChatGPT</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Jenkins.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Jenkins</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/5%E3%80%81%E8%BF%90%E7%BB%B4/Netty.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Netty</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>数据库</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>MySQL</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%AE%BE%E8%AE%A1.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E6%A0%B8%E5%BF%83/%E8%BF%90%E7%BB%B4.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MySQL运维</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分库分表</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>Redis</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%8E%9F%E7%90%86.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis原理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis高级</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/Redis%E5%AE%9E%E6%88%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Redis实战</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Redis/%E6%9C%AC%E5%9C%B0%E7%BC%93%E5%AD%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>本地缓存</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>MongoDB</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MongoDB/%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MongoDB基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/MongoDB/%E6%95%B4%E5%90%88.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>MongoDB进阶</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>ElasticSearch</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/ElasticSearch/1%E3%80%81ES%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/ElasticSearch/3%E3%80%81ES%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES高级</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/influxdb.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>InfluxDB</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/2%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93/Neo4j.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Neo4j</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>高并发 & 秒杀 & 分布式</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E5%88%86%E5%B8%83%E5%BC%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分布式理论</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/4%E3%80%81%E5%BE%AE%E6%9C%8D%E5%8A%A1/%E5%BF%85%E5%A4%87/%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>分布式锁</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E7%A7%92%E6%9D%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>秒杀</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E9%AB%98%E5%8F%AF%E7%94%A8.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高可用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%B8%89%E9%AB%98/%E9%AB%98%E5%B9%B6%E5%8F%91.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高并发</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>云原生</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%BA%91%E5%8E%9F%E7%94%9F/Docker.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Docker</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E4%BA%91%E5%8E%9F%E7%94%9F/K8S.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>K8S</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>可视化 & 监控</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E7%9B%91%E6%8E%A7%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>监控基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E7%9B%91%E6%8E%A7%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>监控进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/%E5%8F%AF%E8%A7%86%E5%8C%96%E5%A4%A7%E5%B1%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>可视化大屏</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E5%8F%AF%E8%A7%86%E5%8C%96%20&amp;%20%E7%9B%91%E6%8E%A7/Zabbix.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Zabbix</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>学前端</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>HTML+CSS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/HTML%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>HTML基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/CSS%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>CSS基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/1%E3%80%81HTML+CSS/%E7%BD%91%E9%A1%B5%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>网页进阶</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>JS+TS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/JS%20%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JS基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/JS%20%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>JS进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/ES6%20%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES6基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/ES6%20%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>ES6进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/2%E3%80%81JS+TS/TypeScript.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>TS基础</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>NodeJS</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Node基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Node进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/4%E3%80%81Node/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>Vue</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E8%BF%9B%E9%98%B6.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3进阶</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E9%AB%98%E7%BA%A7.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3高级</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue3/Vue3%E6%96%B0%E8%AF%AD%E6%B3%95.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>Vue3新语法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/3%E3%80%81Vue/Vue2/Vue2%E9%A1%B9%E7%9B%AE.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>小程序</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>小程序基础</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E4%BC%98%E5%8C%96.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>小程序优化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/uniapp.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>uniapp</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/1%E3%80%81%E5%AD%A6%E5%89%8D%E7%AB%AF/5%E3%80%81%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%B0%8F%E7%A8%8B%E5%BA%8F%E9%A1%B9%E7%9B%AE.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目实战</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>计算机基础</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>数据结构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>操作系统</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>设计模式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/%E7%BD%91%E7%BB%9C%E5%9F%BA%E7%A1%80.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>计算机网络</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/UML.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>UML</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/%E7%AE%97%E6%B3%95/LeetCode.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>LeetCode</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0 collapsible collapsed" data-v-845b8fc6 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h2 class="text" data-v-9b797284>项目实战</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>云尚办公</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E4%BA%91%E5%B0%9A%E5%8A%9E%E5%85%AC/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>小兔鲜</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E8%BF%9B%E9%98%B6%E7%AF%871.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇1</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E5%B0%8F%E5%85%94%E9%B2%9C/%E8%BF%9B%E9%98%B6%E7%AF%872.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇2</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>地图</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E7%99%BE%E5%BA%A6%E5%9C%B0%E5%9B%BE/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>苍穹外卖</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E8%8B%8D%E7%A9%B9%E5%A4%96%E5%8D%96/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible collapsed" data-v-9b797284 data-v-9b797284><div class="item" role="button" tabindex="0" data-v-9b797284><div class="indicator" data-v-9b797284></div><h3 class="text" data-v-9b797284>黑马头条</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-9b797284><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="caret-icon" data-v-9b797284><path d="M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"></path></svg></div></div><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E5%9F%BA%E7%A1%80%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>基础篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E8%BF%9B%E9%98%B6%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E8%BF%9B%E9%98%B6%E7%AF%872.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>进阶篇2</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%BB%91%E9%A9%AC%E5%A4%B4%E6%9D%A1/%E9%AB%98%E7%BA%A7%E7%AF%87.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>高级篇</p><!--]--></a><!----></div><!----></div><!--]--></div></section><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E6%94%AF%E4%BB%98.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>支付</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/%E9%A1%B9%E7%9B%AE%E6%8E%A8%E8%8D%90.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>项目推荐</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="group" data-v-845b8fc6><section class="VPSidebarItem level-0" data-v-845b8fc6 data-v-9b797284><!----><div class="items" data-v-9b797284><!--[--><div class="VPSidebarItem level-1 is-link" data-v-9b797284 data-v-9b797284><div class="item" data-v-9b797284><div class="indicator" data-v-9b797284></div><a class="VPLink link link" href="/notebook/team.html" data-v-9b797284><!--[--><p class="text" data-v-9b797284>团队成员</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-255ec12d data-v-669faec9><div class="VPDoc has-sidebar has-aside" data-v-669faec9 data-v-6b87e69f><!--[--><!--]--><div class="container" data-v-6b87e69f><div class="aside" data-v-6b87e69f><div class="aside-curtain" data-v-6b87e69f></div><div class="aside-container" data-v-6b87e69f><div class="aside-content" data-v-6b87e69f><div class="VPDocAside" data-v-6b87e69f data-v-3f215769><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" data-v-3f215769 data-v-ff0f39c8><div class="content" data-v-ff0f39c8><div class="outline-marker" data-v-ff0f39c8></div><div class="outline-title" data-v-ff0f39c8>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-ff0f39c8><span class="visually-hidden" id="doc-outline-aria-label" data-v-ff0f39c8> Table of Contents for current page </span><ul class="root" data-v-ff0f39c8 data-v-d0ee3533><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-6b87e69f><div class="content-container" data-v-6b87e69f><!--[--><!--]--><!----><main class="main" data-v-6b87e69f><div style="position:relative;" class="vp-doc _notebook_Linux_Linux%E5%9F%BA%E7%A1%80" data-v-6b87e69f><div><p>2022.9.26日修改完善</p><p><a href="https://mp.weixin.qq.com/s?__biz=Mzg5NDY3NzIwMA==&amp;mid=2247505627&amp;idx=2&amp;sn=4c027652fed362696cd7c679d95e62d4&amp;chksm=c0196f64f76ee672b511c075ba391a9b7d7eede0527d76695629ad69f048fc5b38b7b2c663ca&amp;mpshare=1&amp;scene=23&amp;srcid=0416hpn57RxVd6xGWMBNw5lq&amp;sharer_sharetime=1681660166749&amp;sharer_shareid=29b8a04db1dbd975e3bf4e9f47e7ac67#rd" target="_blank" rel="noreferrer">超全 Linux 基础命令总结</a></p><h1 id="linux入门和初体验" tabindex="-1">Linux入门和初体验 <a class="header-anchor" href="#linux入门和初体验" aria-label="Permalink to &quot;Linux入门和初体验&quot;">​</a></h1><h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to &quot;前言&quot;">​</a></h2><h3 id="什么是linux" tabindex="-1">什么是Linux <a class="header-anchor" href="#什么是linux" aria-label="Permalink to &quot;什么是Linux&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557983.png" alt="image-20210808232140228" style="zoom:80%;"><p>Linux是一套免费使用和自由传播的操作系统。说到操作系统，大家比较熟知的应该就是Windows和MacOS操作系统，我们今天所学习的Linux也是一款操作系统。</p><h3 id="为什么要学linux" tabindex="-1">为什么要学Linux <a class="header-anchor" href="#为什么要学linux" aria-label="Permalink to &quot;为什么要学Linux&quot;">​</a></h3><p>那么我们为什么要学习Linux呢，主要出于两个方面的原因。</p><p><strong>1). 企业用人要求</strong></p><p>以下，是从知名招聘网站上搜索的java开发工程师的岗位要求，在很多的岗位要求中都提到了Linux操作系统的经验。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557992.png" alt="image-20210808233115557" style="zoom:80%;"><p>为什么作为javaEE开发工程师，企业还要求我们会Linux操作系统的相关知识呢?</p><p>这是因为Linux操作系统提供了很多稳定的发行版本，广泛的应用在我们的各种服务器操作系统领域，我们将来开发出来的项目，最终要上线运行，就需要将项目部署在Linux服务器中。</p><p><strong>2). 个人发展需要</strong></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557992.png" alt="image-20210808233951662"></p><p>我们作为javaEE开发工程师，将来在企业中开发时会涉及到很多的数据库、中间件等技术，比如MySQL、Redis、MQ等技术，而这些应用软件大多都是需要安装在Linux系统中使用的。我们做为开发人员，是需要通过远程工具连接Linux操作系统，然后来操作这些软件的。而且一些小公司，可能还需要我们自己在服务器上安装这些软件。</p><p>所以，不管从企业的用人需求层面，还是个人发展需要层面来讲，我们作为服务端开发工程师，Linux的基本使用是我们必不可少的技能。</p><h3 id="学完linux能干什么" tabindex="-1">学完Linux能干什么 <a class="header-anchor" href="#学完linux能干什么" aria-label="Permalink to &quot;学完Linux能干什么&quot;">​</a></h3><p>学习完Linux操作系统课程之后，我们可以做以下几个方面的事情：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557991.png" alt="image-20210808234042174" style="zoom:80%;"><h4 id="_1-环境搭建" tabindex="-1">1 环境搭建 <a class="header-anchor" href="#_1-环境搭建" aria-label="Permalink to &quot;1 环境搭建&quot;">​</a></h4><p>系统安装 : 一般我们不会直接将Linux系统安装在本机电脑上，而会安装在公司的一台专门的服务器上。</p><p>远程连接 : 那么我们要想使用服务器，一般都是通过远程连接工具连接Linux系统进行操作。</p><h4 id="_2-常用命令" tabindex="-1">2 常用命令 <a class="header-anchor" href="#_2-常用命令" aria-label="Permalink to &quot;2 常用命令&quot;">​</a></h4><p>连接上服务器之后，我们可以通过所学习的相关指令， 来操作Linux服务器，在Linux服务器中可以执行如下操作：</p><p>A. 文件、目录的基本操作(查看,删除,创建等)</p><p>B. 文件及文件夹的拷贝、移动、重命名</p><p>C. 文件的打包、压缩、解压缩操作</p><p>D. 文本的编辑</p><h4 id="_3-安装软件" tabindex="-1">3 安装软件 <a class="header-anchor" href="#_3-安装软件" aria-label="Permalink to &quot;3 安装软件&quot;">​</a></h4><p>基本的常用指令学会操作之后，我们可以在Linux服务器中安装我们开发常用的软件，比如： JDK、Tomcat、MySQL的安装及配置。</p><h4 id="_4-项目部署" tabindex="-1">4 项目部署 <a class="header-anchor" href="#_4-项目部署" aria-label="Permalink to &quot;4 项目部署&quot;">​</a></h4><p>把基础的软件及环境安装配置好之后，我们就可以将我们开发的项目部署在服务器中进行运行并测试。</p><p>对于我们学习Linux操作系统时，Linux命令是基础，也是学习Linux系统的重点内容，虽然Linux的指令有很多，但是我们常用的指令并不多，大家在学习的时候，主要掌握这部分常用的指令就可以了，对于其他的指令，以后我们用到的时候，知道怎么查询即可。</p><p><strong>对于Linux的常用指令的学习，最好的学习方法就是：<!----></strong></p><h2 id="linux概述" tabindex="-1">Linux概述 <a class="header-anchor" href="#linux概述" aria-label="Permalink to &quot;Linux概述&quot;">​</a></h2><h3 id="主流操作系统" tabindex="-1">主流操作系统 <a class="header-anchor" href="#主流操作系统" aria-label="Permalink to &quot;主流操作系统&quot;">​</a></h3><p>不同领域的主流操作系统，主要分为以下这么几类： 桌面操作系统、服务器操作系统、移动设备操作系统、嵌入式操作系统。接下来，这几个领域中，代表性的操作系统是那些?</p><p>1). 桌面操作系统</p><table><thead><tr><th>操作系统</th><th>特点</th></tr></thead><tbody><tr><td>Windows</td><td>用户数量最多</td></tr><tr><td>MacOS</td><td>操作体验好，办公人士首选</td></tr><tr><td>Linux</td><td>用户数量少(桌面操作系统,Linux使用较少)</td></tr></tbody></table><p>2). 服务器操作系统</p><table><thead><tr><th>操作系统</th><th>特点</th></tr></thead><tbody><tr><td>Unix</td><td>安全、稳定、付费</td></tr><tr><td>Linux</td><td>安全、稳定、免费、占有率高</td></tr><tr><td>Windows Server</td><td>付费、占有率低</td></tr></tbody></table><p>3). 移动设备操作系统</p><table><thead><tr><th>操作系统</th><th>特点</th></tr></thead><tbody><tr><td>Android</td><td>基于 Linux 、开源，主要用于智能手机、平板电脑和智能电视</td></tr><tr><td>IOS</td><td>苹果公司开发、不开源，用于苹果公司的产品，例如：iPhone、 iPad</td></tr></tbody></table><p>4). 嵌入式操作系统</p><table><thead><tr><th>操作系统</th><th>特点</th></tr></thead><tbody><tr><td>Linux</td><td>机顶盒、路由器、交换机</td></tr></tbody></table><h3 id="linux发展历史" tabindex="-1">Linux发展历史 <a class="header-anchor" href="#linux发展历史" aria-label="Permalink to &quot;Linux发展历史&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557993.png" alt="image-20210809000920156" style="zoom:80%;"><p>时间：1991年</p><p>地点：芬兰赫尔辛基大学</p><p>人物：Linus Torvalds（21岁）</p><p>语言：C语言、汇编语言</p><p>logo：企鹅</p><p>特点：免费、开源(源代码开放)、多用户(同时允许多个用户操作同一个Linux系统)、多任务(同时允许多个任务执行)</p><h3 id="linux发行版" tabindex="-1">Linux发行版 <a class="header-anchor" href="#linux发行版" aria-label="Permalink to &quot;Linux发行版&quot;">​</a></h3><p>Linux系统的版本分为两种，分别是： 内核版 和 发行版。</p><p>内核是免费、开源的，这也就代表了：</p><ul><li>任何人都可以获得并修改内核，并且自行集成系统级程序</li><li>提供了内核+系统级程序的完整封装，称之为Linux发行版</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052112900.png" alt="image-20221105211219836" style="zoom:80%;"><ul><li><p>基于Linux内核版进行扩展</p></li><li><p>由各个Linux厂商开发、维护</p></li><li><p>有收费版本和免费版本</p></li></ul><p>我们使用Linux操作系统，实际上选择的是Linux的发行版本。在linux系统中，有各种各样的发行版本，具体如下：</p><table><thead><tr><th>发行版本</th><th>Logo</th><th>特点</th></tr></thead><tbody><tr><td>Ubuntu</td><td><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021607597.png" alt="image-20221102160712530" style="zoom:80%;"></td><td>以桌面应用为主</td></tr><tr><td>RedHat</td><td><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021607228.png" alt="image-20221102160724156" style="zoom:80%;"></td><td>应用最广泛、收费</td></tr><tr><td>CentOS</td><td><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021607442.png" alt="image-20221102160737380" style="zoom:80%;"></td><td>RedHat的社区版、免费</td></tr><tr><td>openSUSE</td><td><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021607562.png" alt="image-20221102160748493" style="zoom:80%;"></td><td>对个人完全免费、图形界面华丽</td></tr><tr><td>Fedora</td><td><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021608109.png" alt="image-20221102160804044" style="zoom:80%;"></td><td>功能完备、快速更新、免费</td></tr><tr><td>红旗Linux</td><td><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021608825.png" alt="image-20221102160814755" style="zoom:80%;"></td><td>北京中科红旗软件技术有限公司开发</td></tr></tbody></table><p>除了上述罗列出来的发行版，还有很多Linux发行版，这里，我们就不再一一列举了。</p><h3 id="linux内核" tabindex="-1">Linux内核 <a class="header-anchor" href="#linux内核" aria-label="Permalink to &quot;Linux内核&quot;">​</a></h3><p>Linux系统的组成如下：Linux系统内核，系统级应用程序两部分组成。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052107659.png" alt="image-20221105210746542" style="zoom:80%;"><blockquote><p>内核提供系统最核心的功能，如：调度CPU、调度内存、调度文件系统、调度网络通讯、调度IO等。系统级应用程序，可以理解为出厂自带程序，可供用户快速上手操作系统，如：文件管理器、任务管理器、图片查看、音乐播放等。比如，播放音乐，无论用户使用自带音乐播放器或是自行安装的第三方播放器均是由播放器程序，调用内核提供的相关功能，由内核调度CPU解码、音响发声等。</p></blockquote><p>可以看出，内核是Linux操作系统最核心的所在，系统级应用程序只是锦上添花。Linux内核是免费开源的，任何人都可以下载内核源码并查看且修改。可以通过：<a href="https://www.kernel.org" target="_blank" rel="noreferrer">https://www.kernel.org</a> 去下载Linux内核</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052111302.png" alt="image-20221105211130226" style="zoom:80%;"><h2 id="虚拟机" tabindex="-1">虚拟机 <a class="header-anchor" href="#虚拟机" aria-label="Permalink to &quot;虚拟机&quot;">​</a></h2><p>学习Linux系统，就需要有一个可用的Linux系统。如何获得？将自己的电脑重装系统为Linux？NoNo。这不现实，因为Linux系统并不适合日常办公使用。我们需要借助虚拟机来获得可用的Linux系统环境进行学习。</p><p>那么，什么是虚拟机呢？</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052113578.png" alt="image-20221105211344513" style="zoom:80%;"><p>借助虚拟化技术，我们可以在系统中，通过软件：模拟计算机硬件，并给虚拟硬件安装真实的操作系统。这样，就可以在电脑中，虚拟出一个完整的电脑，以供我们学习Linux系统。</p><h2 id="linux安装" tabindex="-1">Linux安装 <a class="header-anchor" href="#linux安装" aria-label="Permalink to &quot;Linux安装&quot;">​</a></h2><h3 id="安装方式介绍" tabindex="-1">安装方式介绍 <a class="header-anchor" href="#安装方式介绍" aria-label="Permalink to &quot;安装方式介绍&quot;">​</a></h3><p>Linux系统的安装方式，主要包含以下两种：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557051.png" alt="image-20210809184915617" style="zoom:80%;"><table><thead><tr><th>方式</th><th>概述</th><th>场景</th></tr></thead><tbody><tr><td>物理机安装</td><td>直接将操作系统安装到服务器硬件上</td><td>企业开发中，我们使用的服务器基本都是采用这种方式</td></tr><tr><td>虚拟机安装</td><td>通过虚拟机软件安装</td><td>我们在学习阶段，没有自己服务器，而我们又需要学Linux，就可以安装在虚拟机上</td></tr></tbody></table><p><strong>虚拟机</strong>（Virtual Machine）指通过<strong>软件</strong>模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。常用虚拟机软件：</p><ul><li><p>VMWare</p></li><li><p>VirtualBox</p></li><li><p>VMLite WorkStation</p></li><li><p>Qemu</p></li><li><p>HopeddotVOS</p></li></ul><p>那么我们就可以在课程中将Linux操作系统安装在虚拟机中，我们课上选择的虚拟机软件是VMware。</p><h3 id="安装vmware" tabindex="-1">安装VMware <a class="header-anchor" href="#安装vmware" aria-label="Permalink to &quot;安装VMware&quot;">​</a></h3><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557746.png" alt="image-20210809223354144"></p><p>在我们的课程资料中提供了VMware的安装程序。直接双击运行VMware安装程序，根据提示完成安装即可。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557811.png" alt="image-20210809223932893" style="zoom:80%;"><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557011.png" alt="image-20210809223953820"></p><p>以上就是VMware在安装时的每一步操作，基本上就是点击 &quot;下一步&quot; 一直进行安装。</p><h3 id="安装linux" tabindex="-1">安装Linux <a class="header-anchor" href="#安装linux" aria-label="Permalink to &quot;安装Linux&quot;">​</a></h3><p>VMware虚拟机安装完毕之后，我们就可以打开VMware，并在上面来安装Linux操作系统。具体步骤如下：</p><p>首先，我们需要下载操作系统的安装文件，本次使用CentOS7.6版本进行学习：</p><p><a href="https://vault.centos.org/7.6.1810/isos/x86_64/" target="_blank" rel="noreferrer">https://vault.centos.org/7.6.1810/isos/x86_64/</a> (最后的/不要漏掉）</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052114555.png" alt="image-20221105211452484" style="zoom:80%;"><p><strong>1). 选择创建新的虚拟机</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557051.png" alt="image-20210809224601436" style="zoom:80%;"><p><strong>2). 选择&quot;典型&quot;配置</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557253.png" alt="image-20210809224640245"><p><strong>3). 选择&quot;稍后安装操作系统(S)&quot;</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557341.png" alt="image-20210809224740271" style="zoom:80%;"><p><strong>4). 选择&quot;Linux&quot;操作系统,&quot;CentOS7 64位&quot;版本</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557450.png" alt="image-20210809224851755" style="zoom:80%;"><p><strong>5). 设置虚拟机的名称及系统文件存放路径</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557585.png" alt="image-20210809225106268" style="zoom:80%;"><p><strong>6). 设置磁盘容量</strong></p><p><strong>7). 自定义硬件信息</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021610687.png" alt="image-20210809225706412" style="zoom:80%;"><p><strong>8). 启动上述创建的新虚拟机</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557914.png" alt="image-20210809230230390" style="zoom:80%;"><p><strong>9). 选择&quot;Install CentOS7&quot;</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557041.png" alt="image-20210809230720673" style="zoom:80%;"><blockquote><p>进入到Linux系统里面, 我们发现光标无法移动到windows操作系统中了, 这个时候, 我们可以通过快捷键 &quot;Ctrl+Alt&quot; 切换光标到windows系统中。</p></blockquote><p><strong>10). 选择语言为 &quot;简体中文&quot;</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557168.png" alt="image-20210809231002444" style="zoom:80%;"><p><strong>11). 选择&quot;自动配置分区&quot;</strong></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557210.png" alt="image-20210809231704202"></p><p>12). 选择&quot;最小安装(不要选择最小安装，选择带桌面的安装)&quot;</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557420.png" alt="image-20210809232041661"></p><p><strong>13). 设置&quot;root&quot;用户密码</strong></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557465.png" alt="image-20210809232438579"></p><p>安装完毕后，点击窗口中的蓝色的 &quot;重启&quot; 按钮，重启Linux系统。</p><p><strong>14). 登录系统</strong></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557526.png" alt="image-20210809232913715"></p><blockquote><!----></blockquote><h3 id="网卡设置" tabindex="-1">网卡设置 <a class="header-anchor" href="#网卡设置" aria-label="Permalink to &quot;网卡设置&quot;">​</a></h3><p>服务器重启完成之后，我们可以通过linux的指令 <code>ip addr</code> 来查询Linux系统的IP地址，具体信息如下:</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557012.png" alt="image-20210809233341574" style="zoom:80%;"><p>从图中我们可以看到，并没有获取到linux系统的IP地址，这是为什么呢？这是由于启动服务器时未加载网卡，导致IP地址初始化失败而造成的。那么接下来我们就需要来修改网络初始化配置，设定网卡在系统启动时初始化。</p><p><strong>具体操作步骤如下：</strong></p><p>1). 修改网卡的配置项</p><div class="language-java"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">cd </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">				进入根目录</span></span>
<span class="line"><span style="color:#A6ACCD;">cd etc				进入etc目录</span></span>
<span class="line"><span style="color:#A6ACCD;">cd sysconfig		进入sysconfig目录</span></span>
<span class="line"><span style="color:#A6ACCD;">cd network</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">scripts	进入network</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">scripts</span></span>
<span class="line"><span style="color:#A6ACCD;">vi ifcfg</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">ens33		编辑ifcfg</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">ens33文件</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">进入文件后执行如下操作</span><span style="color:#89DDFF;font-style:italic;">:</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#A6ACCD;">①</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;"> 按 i 键 		 进入编辑状态</span></span>
<span class="line"><span style="color:#A6ACCD;">②</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;"> 按↑↓键来移动光标</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> 删除no</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;">输入yes </span></span>
<span class="line"><span style="color:#A6ACCD;">③</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;"> 按 ESC 键</span></span>
<span class="line"><span style="color:#A6ACCD;">④</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;"> 输入 </span><span style="color:#89DDFF;font-style:italic;">:</span><span style="color:#A6ACCD;">wq</span></span>
<span class="line"><span style="color:#A6ACCD;">⑤</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;"> 按 ENTER	保存退出</span></span></code></pre></div><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557062.png" alt="image-20210809234131816"></p><blockquote><!----></blockquote><p>2). 重新启动虚拟机</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557263.png" alt="image-20210809234617798" style="zoom:80%;"><p>重启之后, 再次输入root的用户名密码，登录到Linux系统之后，可以通过指令 <code>ip addr</code> 来查看IP地址。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557398.png" alt="image-20210809235056773" style="zoom:80%;"><h3 id="安装ssh连接工具" tabindex="-1">安装SSH连接工具 <a class="header-anchor" href="#安装ssh连接工具" aria-label="Permalink to &quot;安装SSH连接工具&quot;">​</a></h3><h4 id="ssh连接工具介绍" tabindex="-1">SSH连接工具介绍 <a class="header-anchor" href="#ssh连接工具介绍" aria-label="Permalink to &quot;SSH连接工具介绍&quot;">​</a></h4><p>Linux已经安装并且配置好了，接下来我们要来学习Linux的基本操作指令。而在学习之前，我们还需要做一件事情，由于我们企业开发时，Linux服务器一般都是在远程的机房部署的，我们要操作服务器，不会每次都跑到远程的机房里面操作，而是会直接通过SSH连接工具进行连接操作。</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557436.png" alt="image-20210810000224690"></p><p>SSH（Secure Shell），建立在应用层基础上的安全协议。常用的SSH连接工具:</p><table><thead><tr><th>SSH工具</th><th>Logo</th><th>说明</th></tr></thead><tbody><tr><td>putty</td><td></td><td>免费, 界面简单, 功能单一</td></tr><tr><td>secureCRT</td><td></td><td>收费, 功能强大</td></tr><tr><td>xshell</td><td></td><td>收费版/免费版</td></tr><tr><td>finalshell</td><td></td><td>免费, 功能强大, 界面效果好 (课程中采用)</td></tr></tbody></table><h4 id="finalshell安装" tabindex="-1">FinalShell安装 <a class="header-anchor" href="#finalshell安装" aria-label="Permalink to &quot;FinalShell安装&quot;">​</a></h4><p>在课程资料中，提供了finalShell的安装包</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557585.png" alt="image-20210810000309123"></p><p>双击.exe文件，然后进行正常的安装即可。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021613382.png" alt="image-20210810000318212" style="zoom:80%;"><h4 id="连接linux" tabindex="-1">连接Linux <a class="header-anchor" href="#连接linux" aria-label="Permalink to &quot;连接Linux&quot;">​</a></h4><p><strong>1). 打开finalShell</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557710.png" alt="image-20210810173004153" style="zoom:80%;"><p><strong>2). 建立连接</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557799.png" alt="image-20210810173138650" style="zoom:80%;"><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557115.png" alt="image-20210810173900140"></p><h3 id="设置阿里云下载源⭐" tabindex="-1">设置阿里云下载源⭐ <a class="header-anchor" href="#设置阿里云下载源⭐" aria-label="Permalink to &quot;设置阿里云下载源⭐&quot;">​</a></h3><h4 id="centos7" tabindex="-1">centos7 <a class="header-anchor" href="#centos7" aria-label="Permalink to &quot;centos7&quot;">​</a></h4><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 备份原来的yum源，以防后续使用</span></span>
<span class="line"><span style="color:#82AAFF;">cd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/yum.repos.d/</span><span style="color:#89DDFF;">;</span><span style="color:#FFCB6B;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bak/</span><span style="color:#89DDFF;">;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#A6ACCD;">*</span><span style="color:#C3E88D;">.repo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">bak/</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 下载阿里云的base源</span></span>
<span class="line"><span style="color:#FFCB6B;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">https://mirrors.aliyun.com/repo/Centos-7.repo</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 下载阿里云的epel源</span></span>
<span class="line"><span style="color:#FFCB6B;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-O</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/yum.repos.d/epel.repo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/repo/epel-7.repo</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 清除缓存并生成新的缓存</span></span>
<span class="line"><span style="color:#FFCB6B;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">clean</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">all</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&amp;&amp;</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">makecache</span></span></code></pre></div><h4 id="ubuntu20" tabindex="-1">ubuntu20 <a class="header-anchor" href="#ubuntu20" aria-label="Permalink to &quot;ubuntu20&quot;">​</a></h4><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/apt/sources.list</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/apt/sources.list.bak</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/apt/sources.list</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">deb</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb-src</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-security</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb-src</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-security</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-updates</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb-src</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-updates</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-proposed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb-src</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-proposed</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-backports</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"><span style="color:#FFCB6B;">deb-src</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://mirrors.aliyun.com/ubuntu/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">focal-backports</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">main</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restricted</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">universe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">multiverse</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">apt-get</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">apt-get</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">upgrade</span></span></code></pre></div><h2 id="wsl2虚拟机⭐" tabindex="-1">WSL2虚拟机⭐ <a class="header-anchor" href="#wsl2虚拟机⭐" aria-label="Permalink to &quot;WSL2虚拟机⭐&quot;">​</a></h2><h3 id="为什么要用wsl" tabindex="-1">为什么要用WSL <a class="header-anchor" href="#为什么要用wsl" aria-label="Permalink to &quot;为什么要用WSL&quot;">​</a></h3><p>WSL作为Windows10系统带来的全新特性，正在逐步颠覆开发人员既有的选择。</p><ul><li>传统方式获取Linux操作系统环境，是安装完整的虚拟机，如VMware</li><li>使用WSL，可以以非常轻量化的方式，得到Linux系统环境</li></ul><p>目前，开发者正在逐步抛弃以虚拟机的形式获取Linux系统环境，而在逐步拥抱WSL环境。所以，课程也紧跟当下趋势，为同学们讲解如何使用WSL，简单、快捷的获得Linux系统环境。所以，为什么要用WSL，其实很简单：</p><ul><li><p>开发人员都在用，大家都用的，我们也要学习</p></li><li><p>实在是太方便了，简单、好用、轻量化、省内存</p></li></ul><h3 id="什么是wsl" tabindex="-1">什么是WSL <a class="header-anchor" href="#什么是wsl" aria-label="Permalink to &quot;什么是WSL&quot;">​</a></h3><blockquote><p>WSL：Windows Subsystem for Linux，是用于Windows系统之上的Linux子系统。</p><p>作用很简单，可以在Windows系统中获得Linux系统环境，并完全直连计算机硬件，无需通过虚拟机虚拟硬件。</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052118138.png" alt="image-20221105211850053" style="zoom:80%;"><h3 id="微软应用商店连不上网问题" tabindex="-1">微软应用商店连不上网问题 <a class="header-anchor" href="#微软应用商店连不上网问题" aria-label="Permalink to &quot;微软应用商店连不上网问题&quot;">​</a></h3><p>总结：使用代理VPN的锅</p><p>你曾经使用过某些可以修改代理设置的软件，比如，你是不是上过谷歌？看过油管？是不是用过游戏外服加速器？如果你用过，那么往下看，如果没用过，不保证这个办法对你有用。</p><p>当你关闭代理软件后，系统的代理源出现了问题。默认的代理源是ie代理设置，你使用的其他软件把这个代理源修改为别的了，所以系统无法通过代理连接到windows商店服务器。</p><p>打开管理员的PowerShell，执行如下命令，执行即可</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">netsh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">winhttp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">import</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">proxy</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">source=ie</span></span>
<span class="line"><span style="color:#FFCB6B;">WSReset.exe</span></span></code></pre></div><p>重启电脑，然后就能用了，注意把网络连接最下面的代理里面的三个选项给关了</p><h3 id="wsl-部署" tabindex="-1">WSL 部署 <a class="header-anchor" href="#wsl-部署" aria-label="Permalink to &quot;WSL 部署&quot;">​</a></h3><h4 id="开启wsl功能" tabindex="-1">开启WSL功能 <a class="header-anchor" href="#开启wsl功能" aria-label="Permalink to &quot;开启WSL功能&quot;">​</a></h4><p>WSL是Windows10自带功能，需要开启，无需下载</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052119174.png" alt="image-20221105211943092" style="zoom:80%;"><p>点击确定后会进行部署，最后重启即可。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052120559.png" alt="image-20221105212025479" style="zoom:80%;"><h4 id="下载ubuntu" tabindex="-1">下载Ubuntu <a class="header-anchor" href="#下载ubuntu" aria-label="Permalink to &quot;下载Ubuntu&quot;">​</a></h4><p>打开Windows应用商店</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052121893.png" alt="image-20221105212109790" style="zoom:80%;"><p>点击获取并安装</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052122539.png" alt="image-20221105212209447" style="zoom:80%;"><p>点击启动</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052122151.png" alt="image-20221105212246990" style="zoom:80%;"><h4 id="创建用户" tabindex="-1">创建用户 <a class="header-anchor" href="#创建用户" aria-label="Permalink to &quot;创建用户&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052123702.png" alt="image-20221105212312628" style="zoom:80%;"><h4 id="进入ubuntu系统" tabindex="-1">进入Ubuntu系统 <a class="header-anchor" href="#进入ubuntu系统" aria-label="Permalink to &quot;进入Ubuntu系统&quot;">​</a></h4><p>至此，得到了一个可用的Ubuntu操作系统环境</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052123020.png" alt="image-20221105212348935" style="zoom:80%;"><h4 id="安装-windows-terminal软件" tabindex="-1">安装 Windows Terminal软件 <a class="header-anchor" href="#安装-windows-terminal软件" aria-label="Permalink to &quot;安装 Windows Terminal软件&quot;">​</a></h4><p>Ubuntu自带的终端窗口软件不太好用，我们可以使用微软推出的：Windows Terminal软件</p><p>在应用商店中搜索terminal关键字，找到Windows Terminal软件下载并安装</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052127239.png" alt="image-20221105212743143" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052129353.png" alt="image-20221105212901262" style="zoom:80%;"><p>再次打开Windows Terminal软件，即默认使用Ubuntu系统了（WSL）</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052129149.png" alt="image-20221105212931070" style="zoom:80%;"><h4 id="设置root密码" tabindex="-1">设置root密码 <a class="header-anchor" href="#设置root密码" aria-label="Permalink to &quot;设置root密码&quot;">​</a></h4><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">passwd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">按回车，she</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">z</span></span></code></pre></div><h4 id="关闭ubuntu" tabindex="-1">关闭Ubuntu <a class="header-anchor" href="#关闭ubuntu" aria-label="Permalink to &quot;关闭Ubuntu&quot;">​</a></h4><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--shutdown</span></span></code></pre></div><h3 id="切换ubuntu安装位置" tabindex="-1">切换Ubuntu安装位置 <a class="header-anchor" href="#切换ubuntu安装位置" aria-label="Permalink to &quot;切换Ubuntu安装位置&quot;">​</a></h3><p><a href="https://www.jianshu.com/p/6f3195bad5f1" target="_blank" rel="noreferrer">https://www.jianshu.com/p/6f3195bad5f1</a></p><p>在powershell中输入代码：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span></span></code></pre></div><p>图中STATE显示Running，就需要使用</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--shutdown</span></span></code></pre></div><p>将其关闭，再次使用&quot;wsl -l -v&quot;确认状态，发现已经不在运行了</p><p>②导出当前Linux的镜像，其中，&quot;Ubuntu&quot;是使用&quot;wsl -l -v&quot;查看到的linux系统的名字和版本</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--export</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Ubuntu</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">E:</span><span style="color:#A6ACCD;">\W</span><span style="color:#C3E88D;">SLUbuntu</span><span style="color:#A6ACCD;">\u</span><span style="color:#C3E88D;">buntu.tar</span></span></code></pre></div><p>③注销之前的系统并检查，Powershell中输入：再通过“wsl -l -v”，发现子系统已删除</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--unregister</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Ubuntu</span></span>
<span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span></span></code></pre></div><p>④导入镜像，再次查看，可以用了</p><p>第一个路径是安装位置，第二个路径是压缩包位置</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--import</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Ubuntu</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">E:</span><span style="color:#A6ACCD;">\W</span><span style="color:#C3E88D;">SLUbuntu</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">E:</span><span style="color:#A6ACCD;">\W</span><span style="color:#C3E88D;">SLUbuntu</span><span style="color:#A6ACCD;">\u</span><span style="color:#C3E88D;">buntu.tar</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211060942389.png" alt="image-20221106094220317" style="zoom:80%;"><h3 id="切换为wsl2" tabindex="-1">切换为WSL2 <a class="header-anchor" href="#切换为wsl2" aria-label="Permalink to &quot;切换为WSL2&quot;">​</a></h3><blockquote><p>WSL2可以直接用显卡，nvidia-smi</p></blockquote><p>还是和上面一样，右键设置，应用与功能，程序与功能，启用或关闭Linux功能</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061124464.png" alt="image-20221106112451385" style="zoom:67%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--set-default-version</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span></span>
<span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># Ubuntu是上面查出来的name</span></span>
<span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--set-version</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Ubuntu</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span></span>
<span class="line"><span style="color:#FFCB6B;">wsl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span></span>
<span class="line"><span style="color:#FFCB6B;">netsh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">winsock</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">reset</span></span></code></pre></div><p>重启电脑后，查看显卡</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">nvidia-smi</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061121017.png" alt="image-20221106112155918" style="zoom:80%;"><h3 id="允许ssh" tabindex="-1">允许SSH <a class="header-anchor" href="#允许ssh" aria-label="Permalink to &quot;允许SSH&quot;">​</a></h3><blockquote><p>注意：连接可以使用127.0.0.1进行连接，不需要每次都修改IP</p></blockquote><p>1.据网上说的是，需要先卸载ssh后再安装。【我这里是先卸载了再安装】</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo apt</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">get remove openssh</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">server</span></span>
<span class="line"><span style="color:#A6ACCD;">sudo apt</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">get install openssh</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">server</span></span></code></pre></div><p>2.编辑sshd_config文件</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo vi </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">etc</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">ssh</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">sshd_config</span></span></code></pre></div><p>可能有几处需要修改：</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">Port </span><span style="color:#F78C6C;">22</span></span>
<span class="line"><span style="color:#A6ACCD;">PermitRootLogin yes</span></span>
<span class="line"><span style="color:#A6ACCD;">PasswordAuthentication yes</span></span></code></pre></div><p>3.重启ssh服务(每次启动都要执行)</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo service ssh restart</span></span></code></pre></div><p>4.获取本地ip</p><div class="language-javascript"><button title="Copy Code" class="copy"></button><span class="lang">javascript</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ifconfig</span></span></code></pre></div><h3 id="wsl2出现不支持对象问题" tabindex="-1">WSL2出现不支持对象问题 <a class="header-anchor" href="#wsl2出现不支持对象问题" aria-label="Permalink to &quot;WSL2出现不支持对象问题&quot;">​</a></h3><blockquote><p>打开powershell，以管理员模式打开，输入以下命令，无需重启，即可完成</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">netsh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">winsock</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">reset</span></span></code></pre></div><h2 id="虚拟机快照" tabindex="-1">虚拟机快照 <a class="header-anchor" href="#虚拟机快照" aria-label="Permalink to &quot;虚拟机快照&quot;">​</a></h2><p>在学习阶段我们无法避免的可能损坏Linux操作系统。如果损坏的话，重新安装一个Linux操作系统就会十分麻烦。VMware虚拟机（Workstation和Funsion）支持为虚拟机制作快照。通过快照将当前虚拟机的状态保存下来，在以后可以通过快照恢复虚拟机到保存的状态。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052130288.png" alt="image-20221105213035222" style="zoom:80%;"><p>在VMware Workstation Pro中制作并还原快照</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052131377.png" alt="image-20221105213104293" style="zoom:80%;"><h2 id="finalshell" tabindex="-1">FinalShell <a class="header-anchor" href="#finalshell" aria-label="Permalink to &quot;FinalShell&quot;">​</a></h2><p>既然决定使用命令行去学习Linux操作系统，那么就必须丰富一下工具的使用。我们使用VMware可以得到Linux虚拟机，但是在VMware中操作Linux的命令行页面不太方便，主要是：</p><ul><li>内容的复制、粘贴跨越VMware不方便</li><li>文件的上传、下载跨越VMware不方便</li><li>也就是和Linux系统的各类交互，跨越VMware不方便</li></ul><p>我们可以通过第三方软件，FinalShell，远程连接到Linux操作系统之上。通过FinalShell去操作Linux系统。</p><p>FinalShell的下载地址为：<a href="http://www.hostbuf.com/downloads/finalshell_install.exe" target="_blank" rel="noreferrer">http://www.hostbuf.com/downloads/finalshell_install.exe</a></p><p>首先，先查询到Linux系统的IP地址</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052136408.png" alt="image-20221105213615322" style="zoom:80%;"><p>打开Finshell软件，配置到Linux系统的连接（Mac和Windows系统的操作一致，不再分开赘述）</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052136034.png" alt="image-20221105213635955" style="zoom:80%;"><p>按图示配置连接，并点击确定</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052137996.png" alt="image-20221105213700916" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052137479.png" alt="image-20221105213717399" style="zoom:80%;"><p>点击接受并保存</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052137142.png" alt="image-20221105213739077" style="zoom:80%;"><p>如图连接成功</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211052137941.png" alt="image-20221105213756814" style="zoom:80%;"><h2 id="连不上问题" tabindex="-1">连不上问题 <a class="header-anchor" href="#连不上问题" aria-label="Permalink to &quot;连不上问题&quot;">​</a></h2><blockquote><p>进入网络，更改适配器设置</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304241727451.png" alt="image-20230424172732327" style="zoom:67%;"><blockquote><p>IPv4使用自动获取IP地址，再连接试试看</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304241728217.png" alt="image-20230424172813110" style="zoom:67%;"><h2 id="linux目录结构" tabindex="-1">Linux目录结构 <a class="header-anchor" href="#linux目录结构" aria-label="Permalink to &quot;Linux目录结构&quot;">​</a></h2><p>登录到Linux系统之后，我们需要先来熟悉一下Linux的目录结构。在Linux系统中，也是存在目录的概念的，但是Linux的目录结构和Windows的目录结构是存在比较多的差异的 在Windows目录下，是一个一个的盘符(C盘、D盘、E盘)，目录是归属于某一个盘符的。Linux系统中的目录有以下特点：</p><p><strong>A. / 是所有目录的顶点</strong></p><p><strong>B. 目录结构像一颗倒挂的树</strong></p><p><strong>Linux 和 Windows的目录结构对比:</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557155.png" alt="image-20210810174831655" style="zoom:80%;"><p>Linux的目录结构，如下：</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021557204.png" alt="image-20210810174954476"></p><p>根目录/ 下各个目录的作用及含义说明:</p><table><thead><tr><th>编号</th><th>目录</th><th>含义</th></tr></thead><tbody><tr><td>1</td><td>/bin</td><td>存放二进制可执行文件</td></tr><tr><td>2</td><td>/boot</td><td>存放系统引导时使用的各种文件</td></tr><tr><td>3</td><td>/dev</td><td>存放设备文件</td></tr><tr><td>4</td><td>/etc</td><td>存放系统配置文件</td></tr><tr><td>5</td><td>/home</td><td>存放系统用户的文件</td></tr><tr><td>6</td><td>/lib</td><td>存放程序运行所需的共享库和内核模块</td></tr><tr><td>7</td><td>/opt</td><td>额外安装的可选应用程序包所放置的位置</td></tr><tr><td>8</td><td>/root</td><td>超级用户目录</td></tr><tr><td>9</td><td>/sbin</td><td>存放二进制可执行文件，只有root用户才能访问</td></tr><tr><td>10</td><td>/tmp</td><td>存放临时文件</td></tr><tr><td>11</td><td>/usr</td><td>存放系统应用程序</td></tr><tr><td>12</td><td>/var</td><td>存放运行时需要改变数据的文件，例如日志文件</td></tr></tbody></table><h1 id="文本编辑" tabindex="-1">文本编辑 <a class="header-anchor" href="#文本编辑" aria-label="Permalink to &quot;文本编辑&quot;">​</a></h1><blockquote><p>VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。 VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜 色辨别语法的正确性，方便程序设计。VIM 与 VI 编辑器完全兼容。</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vim</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261306386.png" alt="image-20220926130641291" style="zoom:80%;"><h2 id="起步阶段" tabindex="-1">起步阶段 <a class="header-anchor" href="#起步阶段" aria-label="Permalink to &quot;起步阶段&quot;">​</a></h2><blockquote><p>注意：ubuntu自带的vi是tiny版本，无法正常编辑，只需要卸载vim-tiny，安装vim-full即可正常使用。</p></blockquote><p>打开终端输入：</p><div class="language-csharp"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo apt</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">get remove vim</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">common</span></span></code></pre></div><p>待卸载完成后，输入：</p><div class="language-csharp"><button title="Copy Code" class="copy"></button><span class="lang">csharp</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo apt</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">get install vim</span></span></code></pre></div><h2 id="一般模式" tabindex="-1">一般模式 <a class="header-anchor" href="#一般模式" aria-label="Permalink to &quot;一般模式&quot;">​</a></h2><blockquote><p>以 vi 打开一个档案就直接进入一般模式了（这是默认的模式）。在这个模式中， 你可 以使用『上下左右』按键来移动光标，你可以使用『删除字符』或『删除整行』来处理档 案内容， 也可以使用『复制、粘贴』来处理你的文件数据</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261151509.png" alt="image-20220926115123412" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061504173.png" alt="image-20221106150437065" style="zoom:80%;"><h2 id="编辑模式" tabindex="-1">编辑模式 <a class="header-anchor" href="#编辑模式" aria-label="Permalink to &quot;编辑模式&quot;">​</a></h2><blockquote><p>在一般模式中可以进行删除、复制、粘贴等的动作，但是却无法编辑文件内容的！要 等到你按下『i, I, o, O, a, A』等任何一个字母之后才会进入编辑模式。 注意了！通常在Linux中，按下这些按键时，在画面的左下方会出现『INSERT或 REPLACE』的字样，此时才可以进行编辑。而如果要回到一般模式时， 则必须要按下 『Esc』这个按键即可退出编辑模式</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061503796.png" alt="image-20221106150345697" style="zoom:80%;"><h2 id="指令模式" tabindex="-1">指令模式 <a class="header-anchor" href="#指令模式" aria-label="Permalink to &quot;指令模式&quot;">​</a></h2><blockquote><p>在一般模式当中，输入『 : / ?』3个中的任何一个按钮，就可以将光标移动到最底下那 一行。在这个模式当中， 可以提供你『搜寻资料』的动作，而读取、存盘、大量取代字符、 离开 vi 、显示行号等动作是在此模式中达成的！</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261305617.png" alt="image-20220926130540540" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">:wq!</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 强制保存退出</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#normal模式下 g表示全局, x表示查找的内容, y表示替换后的内容</span></span>
<span class="line"><span style="color:#82AAFF;">:</span><span style="color:#A6ACCD;">%s/x/y/g</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;">#normal模式下</span></span>
<span class="line"><span style="color:#FFCB6B;">0</span><span style="color:#A6ACCD;">  </span><span style="color:#676E95;font-style:italic;"># 光标移到行首(数字0)</span></span>
<span class="line"><span style="color:#FFCB6B;">$</span><span style="color:#A6ACCD;">  </span><span style="color:#676E95;font-style:italic;"># 光标移至行尾</span></span>
<span class="line"><span style="color:#82AAFF;">shift</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">g</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 跳到文件最后</span></span>
<span class="line"><span style="color:#FFCB6B;">gg</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 跳到文件头</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示行号</span></span>
<span class="line"><span style="color:#FFCB6B;">:set</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nu</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 去除行号</span></span>
<span class="line"><span style="color:#FFCB6B;">:set</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nonu</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 检索</span></span>
<span class="line"><span style="color:#FFCB6B;">/xxx(检索内容</span><span style="color:#A6ACCD;">)  </span><span style="color:#676E95;font-style:italic;"># 从头检索, 按n查找下一个</span></span>
<span class="line"><span style="color:#89DDFF;">?</span><span style="color:#A6ACCD;">xxx</span><span style="color:#89DDFF;">(</span><span style="color:#FFCB6B;">检索内容</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;">  </span><span style="color:#676E95;font-style:italic;"># 从尾部检索</span></span></code></pre></div><h1 id="系统管理" tabindex="-1">系统管理 <a class="header-anchor" href="#系统管理" aria-label="Permalink to &quot;系统管理&quot;">​</a></h1><h2 id="关机、重启和用户登录注销" tabindex="-1">关机、重启和用户登录注销 <a class="header-anchor" href="#关机、重启和用户登录注销" aria-label="Permalink to &quot;关机、重启和用户登录注销&quot;">​</a></h2><p>注意：shutdown、reboot、halt等命令均已经在关机前底层调用了sync、不放心自己再执行sync</p><blockquote><p>Linux 系统中为了提高磁盘的读写效率，对磁盘采取了 “预读迟写”操作方式。当用户 保存文件时，Linux 核心并不一定立即将保存数据写入物理磁盘中，而是将数据保存在缓 冲区中，等缓冲区满时再写入磁盘，这种方式可以极大的提高磁盘写入数据的效率。但是， 也带来了安全隐患，如果数据还未写入磁盘时，系统掉电或者其他严重问题出现，则将导 致数据丢失。使用 sync 指令可以立即将缓冲区的数据写入磁盘。</p></blockquote><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sync：</span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">把内存的数据同步到磁盘上，当我们关机或者重启时，都应该先执行一下sync，防止数据丢失</span></span>
<span class="line"><span style="color:#A6ACCD;">shutdown </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">h now </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">表示立即关机</span></span>
<span class="line"><span style="color:#A6ACCD;">shutdown </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">h </span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;">：</span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">表示</span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;">分钟后关机</span></span>
<span class="line"><span style="color:#A6ACCD;">shutdown </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">r now </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">立即重启</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 计算机将在 </span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;"> 分钟后关机，并且会显示在登录用户的当前屏幕中</span></span>
<span class="line"><span style="color:#A6ACCD;">shutdown </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">h </span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">This server will shutdown after 1 mins</span><span style="color:#89DDFF;">&#39;</span></span>
<span class="line"><span style="color:#A6ACCD;">halt：</span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 直接使用，关机，作用同上</span></span>
<span class="line"><span style="color:#A6ACCD;">reboot：</span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 重启</span></span>
<span class="line"><span style="color:#A6ACCD;">logout：</span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">注销用户，在centos的terminal输入无效，在Finalshell里输入有效，输入logout后直接断开连接</span></span></code></pre></div><h2 id="查看系统-cpu信息" tabindex="-1">查看系统,CPU信息 <a class="header-anchor" href="#查看系统-cpu信息" aria-label="Permalink to &quot;查看系统,CPU信息&quot;">​</a></h2><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 查看系统内核信息</span></span>
<span class="line"><span style="color:#A6ACCD;">uname </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">a</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 查看系统内核版本</span></span>
<span class="line"><span style="color:#A6ACCD;">cat </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">proc</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">version</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 查看当前用户环境变量</span></span>
<span class="line"><span style="color:#A6ACCD;">env</span></span>
<span class="line"><span style="color:#A6ACCD;">cat </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">proc</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">cpuinfo</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 查看有几个逻辑cpu</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> 包括cpu型号</span></span>
<span class="line"><span style="color:#A6ACCD;">cat </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">proc</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">cpuinfo </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> grep name </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> cut </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">f2 </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">d: </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> uniq </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">c</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 查看有几颗cpu</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;">每颗分别是几核</span></span>
<span class="line"><span style="color:#A6ACCD;">cat </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">proc</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">cpuinfo </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> grep physical </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> uniq </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">c</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 查看当前CPU运行在</span><span style="color:#F78C6C;">32bit</span><span style="color:#A6ACCD;">还是</span><span style="color:#F78C6C;">64bit</span><span style="color:#A6ACCD;">模式下</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> 如果是运行在</span><span style="color:#F78C6C;">32bit</span><span style="color:#A6ACCD;">下也不代表CPU不支持</span><span style="color:#F78C6C;">64bit</span></span>
<span class="line"><span style="color:#A6ACCD;">getconf LONG_BIT</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 结果大于</span><span style="color:#F78C6C;">0</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> 说明支持</span><span style="color:#F78C6C;">64bit</span><span style="color:#A6ACCD;">计算</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;"> lm指long mode</span><span style="color:#89DDFF;">,</span><span style="color:#A6ACCD;"> 支持lm则是</span><span style="color:#F78C6C;">64bit</span></span>
<span class="line"><span style="color:#A6ACCD;">cat </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">proc</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">cpuinfo </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> grep flags </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> grep </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> lm </span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> wc </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">l</span></span></code></pre></div><h2 id="系统运行级别" tabindex="-1">系统运行级别 <a class="header-anchor" href="#系统运行级别" aria-label="Permalink to &quot;系统运行级别&quot;">​</a></h2><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261204434.png" alt="image-20220926120408335" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">vi</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/inittab</span></span>
<span class="line"><span style="color:#FFCB6B;">init</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 进入文字界面</span></span>
<span class="line"><span style="color:#FFCB6B;">init</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 进入图形界面</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261205264.png" alt="image-20220926120506175" style="zoom:80%;"><h2 id="systemctl-服务⭐" tabindex="-1">systemctl 服务⭐ <a class="header-anchor" href="#systemctl-服务⭐" aria-label="Permalink to &quot;systemctl 服务⭐&quot;">​</a></h2><h3 id="基本语法" tabindex="-1">基本语法 <a class="header-anchor" href="#基本语法" aria-label="Permalink to &quot;基本语法&quot;">​</a></h3><p>Linux系统很多软件（内置或第三方）均支持使用systemctl命令控制：启动、停止、开机自启</p><p>能够被systemctl管理的软件，一般也称之为：服务。语法：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032043600.png" alt="image-20221103204320528" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">服务名称</span><span style="color:#A6ACCD;">       </span><span style="color:#C3E88D;">启动服务</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restart</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">服务名称</span><span style="color:#A6ACCD;">     </span><span style="color:#C3E88D;">重启服务</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">stop</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">服务名称</span><span style="color:#A6ACCD;">       </span><span style="color:#C3E88D;">停止服务</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">服务名称</span><span style="color:#A6ACCD;">      </span><span style="color:#C3E88D;">加入到开机启动项</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">disable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">服务名称</span><span style="color:#A6ACCD;">     </span><span style="color:#C3E88D;">取消加入到开机启动项</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">status</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">服务名称</span><span style="color:#A6ACCD;">      </span><span style="color:#C3E88D;">查看服务状态</span></span></code></pre></div><h3 id="内置服务" tabindex="-1">内置服务 <a class="header-anchor" href="#内置服务" aria-label="Permalink to &quot;内置服务&quot;">​</a></h3><p>系统内置的服务比较多，比如：</p><ul><li>NetworkManager，主网络服务</li><li>network，副网络服务</li><li>firewalld，防火墙服务</li><li>sshd，ssh服务（FinalShell远程登录Linux使用的就是这个服务）</li></ul><p>现在可以使用systemctl去尝试一下，控制这些服务的启动、关闭、自启动啦</p><h3 id="第三方软件" tabindex="-1">第三方软件 <a class="header-anchor" href="#第三方软件" aria-label="Permalink to &quot;第三方软件&quot;">​</a></h3><p>除了内置的服务以外，部分第三方软件安装后也可以以systemctl进行控制。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ntp</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 安装ntp软件，可以通过ntpd服务名，配合systemctl进行控制</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">httpd</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 安装apache服务器软件，可以通过httpd服务名，配合systemctl进行控制</span></span></code></pre></div><p>部分软件安装后没有自动集成到systemctl中，我们可以手动添加。这部分内容在后续章节和大家详细讲解。</p><h2 id="firewall防火墙⭐" tabindex="-1">firewall防火墙⭐ <a class="header-anchor" href="#firewall防火墙⭐" aria-label="Permalink to &quot;firewall防火墙⭐&quot;">​</a></h2><div class="language-sql"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 开启和关闭防火墙</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl </span><span style="color:#F78C6C;">start</span><span style="color:#A6ACCD;"> firewalld</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl </span><span style="color:#F78C6C;">stop</span><span style="color:#A6ACCD;"> firewalld</span></span>
<span class="line"><span style="color:#A6ACCD;"># 查看防火墙状态</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl </span><span style="color:#F78C6C;">status</span><span style="color:#A6ACCD;"> firewalld</span></span>
<span class="line"><span style="color:#A6ACCD;"># 设置开机启动</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl </span><span style="color:#F78C6C;">enable</span><span style="color:#A6ACCD;"> firewalld</span></span>
<span class="line"><span style="color:#A6ACCD;"># 禁用开机启动</span></span>
<span class="line"><span style="color:#A6ACCD;">systemctl </span><span style="color:#F78C6C;">disable</span><span style="color:#A6ACCD;"> firewalld</span></span>
<span class="line"><span style="color:#A6ACCD;"># 重启防火墙</span></span>
<span class="line"><span style="color:#A6ACCD;">firewall</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cmd </span><span style="color:#676E95;font-style:italic;">--reload</span></span>
<span class="line"><span style="color:#A6ACCD;"># 开放端口（修改后需要重启防火墙方可生效）</span></span>
<span class="line"><span style="color:#A6ACCD;">firewall</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cmd </span><span style="color:#676E95;font-style:italic;">--zone=public --add-port=8080/tcp --permanent</span></span>
<span class="line"><span style="color:#A6ACCD;"># 查看开放的端口</span></span>
<span class="line"><span style="color:#A6ACCD;">firewall</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cmd </span><span style="color:#676E95;font-style:italic;">--list-ports</span></span>
<span class="line"><span style="color:#A6ACCD;"># 关闭端口</span></span>
<span class="line"><span style="color:#A6ACCD;">firewall</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cmd </span><span style="color:#676E95;font-style:italic;">--zone=public --remove-port=8080/tcp --permanent</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261202115.png" alt="image-20220926120253008" style="zoom:80%;"><h2 id="软连接快捷方式" tabindex="-1">软连接快捷方式 <a class="header-anchor" href="#软连接快捷方式" aria-label="Permalink to &quot;软连接快捷方式&quot;">​</a></h2><blockquote><p>ln命令创建软连接</p></blockquote><p>在系统中创建软链接，可以将文件、文件夹链接到其它位置。类似Windows系统中的《快捷方式》</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">ln</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> [原文件或目录] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">软链接名</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> （功能描述：给原文件创建一个软链接）</span></span></code></pre></div><p>-s选项，创建软连接，参数1：被链接的文件或文件夹，参数2：要链接去的目的地</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">ln</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/yum.conf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/yum.conf</span></span>
<span class="line"><span style="color:#FFCB6B;">ln</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/yum</span></span></code></pre></div><blockquote><p>软链接也称为符号链接，类似于 windows 里的快捷方式，有自己的数据块，主要存放了链接其他文件的路径</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 创建软连接</span></span>
<span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xiyou/dssz/</span></span>
<span class="line"><span style="color:#FFCB6B;">ln</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xiyou/dssz/houge.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">./houzi</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 删除软连接(注意不要写最后的/)</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-rf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houzi</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 进入软连接实际物理路径</span></span>
<span class="line"><span style="color:#FFCB6B;">ln</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xiyou/dssz/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">./dssz</span></span>
<span class="line"><span style="color:#82AAFF;">cd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-P</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dssz/</span></span></code></pre></div><h2 id="sshkey" tabindex="-1">sshkey <a class="header-anchor" href="#sshkey" aria-label="Permalink to &quot;sshkey&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 创建sshkey</span></span>
<span class="line"><span style="color:#A6ACCD;">ssh-keygen -t rsa -C your_email@example.com</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">#id_rsa.pub 的内容拷贝到要控制的服务器的 home/username/.ssh/authorized_keys 中,如果没有则新建(.ssh权限为700, authorized_keys权限为600)</span></span></code></pre></div><h2 id="命令重命名" tabindex="-1">命令重命名 <a class="header-anchor" href="#命令重命名" aria-label="Permalink to &quot;命令重命名&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 在各个用户的.bash_profile中添加重命名配置</span></span>
<span class="line"><span style="color:#A6ACCD;">alias ll=&#39;ls -alF&#39;</span></span></code></pre></div><h2 id="同步服务器时间" tabindex="-1">同步服务器时间 <a class="header-anchor" href="#同步服务器时间" aria-label="Permalink to &quot;同步服务器时间&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sudo ntpdate -u ntp.api.bz</span></span></code></pre></div><h2 id="后台运行命令" tabindex="-1">后台运行命令 <a class="header-anchor" href="#后台运行命令" aria-label="Permalink to &quot;后台运行命令&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 后台运行,并且有nohup.out输出</span></span>
<span class="line"><span style="color:#A6ACCD;">nohup xxx &amp;</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># 后台运行, 不输出任何日志</span></span>
<span class="line"><span style="color:#A6ACCD;">nohup xxx &gt; /dev/null &amp;</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;"># 后台运行, 并将错误信息做标准输出到日志中 </span></span>
<span class="line"><span style="color:#A6ACCD;">nohup xxx &gt;out.log 2&gt;&amp;1 &amp;</span></span></code></pre></div><h2 id="强制活动用户退出" tabindex="-1">强制活动用户退出 <a class="header-anchor" href="#强制活动用户退出" aria-label="Permalink to &quot;强制活动用户退出&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 命令来完成强制活动用户退出.其中TTY表示终端名称</span></span>
<span class="line"><span style="color:#A6ACCD;">pkill -kill -t [TTY]</span></span></code></pre></div><h2 id="查看命令路径" tabindex="-1">查看命令路径 <a class="header-anchor" href="#查看命令路径" aria-label="Permalink to &quot;查看命令路径&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">which &lt;命令&gt;</span></span></code></pre></div><h2 id="查看进程所有打开最大fd数" tabindex="-1">查看进程所有打开最大fd数 <a class="header-anchor" href="#查看进程所有打开最大fd数" aria-label="Permalink to &quot;查看进程所有打开最大fd数&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ulimit -n</span></span></code></pre></div><h2 id="配置dns" tabindex="-1">配置dns <a class="header-anchor" href="#配置dns" aria-label="Permalink to &quot;配置dns&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">vim /etc/resolv.conf</span></span></code></pre></div><h2 id="nslookup-查看域名路由表" tabindex="-1">nslookup,查看域名路由表 <a class="header-anchor" href="#nslookup-查看域名路由表" aria-label="Permalink to &quot;nslookup,查看域名路由表&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">nslookup google.com</span></span></code></pre></div><h2 id="last-最近登录信息列表" tabindex="-1">last, 最近登录信息列表 <a class="header-anchor" href="#last-最近登录信息列表" aria-label="Permalink to &quot;last, 最近登录信息列表&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 最近登录的5个账号</span></span>
<span class="line"><span style="color:#A6ACCD;">last -n 5</span></span></code></pre></div><h2 id="设置固定ip" tabindex="-1">设置固定ip <a class="header-anchor" href="#设置固定ip" aria-label="Permalink to &quot;设置固定ip&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ifconfig em1  192.168.5.177 netmask 255.255.255.0</span></span></code></pre></div><h2 id="查看进程内加载的环境变量" tabindex="-1">查看进程内加载的环境变量 <a class="header-anchor" href="#查看进程内加载的环境变量" aria-label="Permalink to &quot;查看进程内加载的环境变量&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 也可以去 cd /proc 目录下, 查看进程内存中加载的东西</span></span>
<span class="line"><span style="color:#A6ACCD;">ps eww -p  XXXXX(进程号)</span></span></code></pre></div><h2 id="查看进程树找到服务器进程" tabindex="-1">查看进程树找到服务器进程 <a class="header-anchor" href="#查看进程树找到服务器进程" aria-label="Permalink to &quot;查看进程树找到服务器进程&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ps auwxf</span></span></code></pre></div><h2 id="查看进程启动路径" tabindex="-1">查看进程启动路径 <a class="header-anchor" href="#查看进程启动路径" aria-label="Permalink to &quot;查看进程启动路径&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">cd /proc/xxx(进程号)</span></span>
<span class="line"><span style="color:#A6ACCD;">ls -all</span></span>
<span class="line"><span style="color:#A6ACCD;"># cwd对应的是启动路径</span></span></code></pre></div><h2 id="添加用户-配置sudo权限" tabindex="-1">添加用户, 配置sudo权限 <a class="header-anchor" href="#添加用户-配置sudo权限" aria-label="Permalink to &quot;添加用户, 配置sudo权限&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;"># 新增用户</span></span>
<span class="line"><span style="color:#A6ACCD;">useradd 用户名</span></span>
<span class="line"><span style="color:#A6ACCD;">passwd 用户名</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">#增加sudo权限</span></span>
<span class="line"><span style="color:#A6ACCD;">vim /etc/sudoers</span></span>
<span class="line"><span style="color:#A6ACCD;"># 修改文件里面的</span></span>
<span class="line"><span style="color:#A6ACCD;"># root    ALL=(ALL)       ALL</span></span>
<span class="line"><span style="color:#A6ACCD;"># 用户名 ALL=(ALL)       ALL</span></span></code></pre></div><h2 id="强制关闭进程名包含xxx的所有进程" tabindex="-1">强制关闭进程名包含xxx的所有进程 <a class="header-anchor" href="#强制关闭进程名包含xxx的所有进程" aria-label="Permalink to &quot;强制关闭进程名包含xxx的所有进程&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">ps aux|grep xxx | grep -v grep | awk &#39;{print $2}&#39; | xargs kill -9</span></span></code></pre></div><h1 id="使用技巧⭐" tabindex="-1">使用技巧⭐ <a class="header-anchor" href="#使用技巧⭐" aria-label="Permalink to &quot;使用技巧⭐&quot;">​</a></h1><h2 id="主要命令" tabindex="-1">主要命令 <a class="header-anchor" href="#主要命令" aria-label="Permalink to &quot;主要命令&quot;">​</a></h2><p>在这一部分中，我们主要介绍几个常用的命令，让大家快速感受以下Linux指令的操作方式。主要包含以下几个指令：</p><table><thead><tr><th>序号</th><th>命令</th><th>对应英文</th><th>作用</th></tr></thead><tbody><tr><td>1</td><td>ls [目录名]</td><td>list</td><td>查看当前目录下的内容</td></tr><tr><td>2</td><td>pwd</td><td>print work directory</td><td>查看当前所在目录</td></tr><tr><td>3</td><td>cd [目录名]</td><td>change directory</td><td>切换目录</td></tr><tr><td>4</td><td>touch [文件名]</td><td>touch</td><td>如果文件不存在,创建文件</td></tr><tr><td>5</td><td>mkdir [目录名]</td><td>make directory</td><td>创建目录</td></tr><tr><td>6</td><td>rm [文件名]</td><td>remove</td><td>删除指定文件</td></tr></tbody></table><h2 id="常用快捷键" tabindex="-1">常用快捷键 <a class="header-anchor" href="#常用快捷键" aria-label="Permalink to &quot;常用快捷键&quot;">​</a></h2><h3 id="tab键自动补全" tabindex="-1">Tab键自动补全 <a class="header-anchor" href="#tab键自动补全" aria-label="Permalink to &quot;Tab键自动补全&quot;">​</a></h3><p>1). Tab键自动补全</p><p>2). 连续两次Tab键，给出操作提示</p><p>A. 执行指令的时候，对于操作的文件/目录，按一下Tab会自动补全:</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021624809.png" alt="image-20210810185641027"></p><p>B. 如果上述以 &quot;1.&quot; 开头的文件有多个，可以按两下Tab键，给出操作提示:</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021624809.png" alt="image-20210810190101671" style="zoom:80%;"><h3 id="ctrl-c-强制停止" tabindex="-1">ctrl + c 强制停止 <a class="header-anchor" href="#ctrl-c-强制停止" aria-label="Permalink to &quot;ctrl + c 强制停止&quot;">​</a></h3><p>Linux某些程序的运行，如果想要强制停止它，可以使用快捷键ctrl + c</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032020233.png" alt="image-20221103202014139" style="zoom:80%;"><p>命令输入错误，也可以通过快捷键ctrl + c，退出当前输入，重新输入</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032020974.png" alt="image-20221103202029906" style="zoom:80%;"><h3 id="ctrl-d-退出或登出" tabindex="-1">ctrl + d 退出或登出 <a class="header-anchor" href="#ctrl-d-退出或登出" aria-label="Permalink to &quot;ctrl + d 退出或登出&quot;">​</a></h3><p>可以通过快捷键：ctrl + d，退出账户的登录</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032020765.png" alt="image-20221103202059679" style="zoom:80%;"><p>或者退出某些特定程序的专属页面</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032021620.png" alt="image-20221103202129512" style="zoom:80%;"><blockquote><p>ps：不能用于退出vi/vim</p></blockquote><h3 id="命令前缀-自动匹配上个命令" tabindex="-1">!命令前缀 自动匹配上个命令 <a class="header-anchor" href="#命令前缀-自动匹配上个命令" aria-label="Permalink to &quot;!命令前缀 自动匹配上个命令&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304182023029.png" alt="image-20230418202344547" style="zoom:80%;"><h3 id="历史命令搜索" tabindex="-1">历史命令搜索 <a class="header-anchor" href="#历史命令搜索" aria-label="Permalink to &quot;历史命令搜索&quot;">​</a></h3><blockquote><p>可以使用上下箭头快速调出曾经使用过的命令</p></blockquote><blockquote><p>可以通过history命令，查看历史输入过的命令</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032022431.png" alt="image-20221103202219304" style="zoom:80%;"><h3 id="自动执行上次匹配命令" tabindex="-1">自动执行上次匹配命令 <a class="header-anchor" href="#自动执行上次匹配命令" aria-label="Permalink to &quot;自动执行上次匹配命令&quot;">​</a></h3><p>可以通过：!命令前缀，自动执行上一次匹配前缀的命令</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032023963.png" alt="image-20221103202304776" style="zoom:80%;"><h3 id="ctrl-r-搜索历史命令" tabindex="-1">ctrl + r 搜索历史命令 <a class="header-anchor" href="#ctrl-r-搜索历史命令" aria-label="Permalink to &quot;ctrl + r 搜索历史命令&quot;">​</a></h3><p>可以通过快捷键：ctrl + r，输入内容去匹配历史命令</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032023885.png" alt="image-20221103202331815" style="zoom:80%;"><p>如果搜索到的内容是你需要的，那么：</p><ul><li>回车键可以直接执行</li><li>键盘左右键，可以得到此命令（不执行）</li></ul><h3 id="光标快速移动" tabindex="-1">光标快速移动 <a class="header-anchor" href="#光标快速移动" aria-label="Permalink to &quot;光标快速移动&quot;">​</a></h3><blockquote><ul><li>ctrl + a，跳到命令开头</li><li>ctrl + e，跳到命令结尾</li><li>ctrl + 键盘左键，向左跳一个单词</li><li>ctrl + 键盘右键，向右跳一个单词</li></ul></blockquote><h3 id="ctrl-l清屏" tabindex="-1">ctrl + L清屏 <a class="header-anchor" href="#ctrl-l清屏" aria-label="Permalink to &quot;ctrl + L清屏&quot;">​</a></h3><p>C. 使用clear命令或者Ctrl+l快捷键实现清屏:</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021624813.png" alt="image-20210810190458929"></p><p>清屏之后，界面就变得干净了:</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021624728.png" alt="image-20221102162448552" style="zoom:80%;"><h2 id="linux命令格式" tabindex="-1">Linux命令格式 <a class="header-anchor" href="#linux命令格式" aria-label="Permalink to &quot;Linux命令格式&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">command [-options] [parameter]</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span></span>
<span class="line"><span style="color:#A6ACCD;">说明: </span></span>
<span class="line"><span style="color:#A6ACCD;">	command: 	 命令名</span></span>
<span class="line"><span style="color:#A6ACCD;">	[-options]:  选项，可用来对命令进行控制，也可以省略</span></span>
<span class="line"><span style="color:#A6ACCD;">	[parameter]: 传给命令的参数，可以是零个、一个或者多个</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span></span>
<span class="line"><span style="color:#A6ACCD;">注意: </span></span>
<span class="line"><span style="color:#A6ACCD;">	[] 	 代表可选</span></span>
<span class="line"><span style="color:#A6ACCD;">	命令名、选项、参数之间有空格进行分隔</span></span></code></pre></div><p><strong>操作示例:</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021625728.png" alt="image-20210810192202455" style="zoom:80%;"><p><strong>关于命令选项的说明</strong></p><p>我们学习的一系列Linux命令，它们所拥有的选项都是非常多的。</p><p>比如，简单的ls命令就有：</p><p>-a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1</p><p>等选项，可以发现选项是极其多的。</p><p>课程中， 并不会将全部的选项都进行讲解，否则，一个ls命令就可能讲解2小时之久。</p><p>课程中，会对常见的选项进行讲解， 足够满足绝大多数的学习、工作场景。</p><h2 id="查看命令帮助和手册" tabindex="-1">查看命令帮助和手册 <a class="header-anchor" href="#查看命令帮助和手册" aria-label="Permalink to &quot;查看命令帮助和手册&quot;">​</a></h2><p>如果想要对命令的其它选项进行查阅，可以通过如下方式：如：ls --help， 会列出ls命令的帮助文档</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061407163.png" alt="image-20221106140710039" style="zoom:80%;"><p>任何命令都支持：--help 选项， 可以通过这个选项，查看命令的帮助。</p><p>如果想要查看命令的详细手册，可以通过man（manual， 手册）命令查看比如：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">man</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ls，就是查看ls命令的详细手册</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">man</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">cd，就是查看cd命令的详细手册</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061408902.png" alt="image-20221106140825751" style="zoom:80%;"><p>大多数手册都是全英文的，如果阅读吃力，可以通过重定向符：man ls &gt; ls-man.txt，输出手册到文件,然后通过翻译软件翻译内容查看哦</p><h2 id="finalshell乱码" tabindex="-1">Finalshell乱码 <a class="header-anchor" href="#finalshell乱码" aria-label="Permalink to &quot;Finalshell乱码&quot;">​</a></h2><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211021618248.png" alt="image-20210810184600425" style="zoom:80%;"><blockquote><p>在执行Linux命令时，提示信息如果显示为乱码，如上图所示。这是由于编码问题导致，只需要修改Linux的编码</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">LANG=&quot;en_US.UTF-8&quot;</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span></span>
<span class="line"><span style="color:#82AAFF;">source</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span></span></code></pre></div><h1 id="用户管理" tabindex="-1">用户管理 <a class="header-anchor" href="#用户管理" aria-label="Permalink to &quot;用户管理&quot;">​</a></h1><h2 id="用户分类" tabindex="-1">用户分类 <a class="header-anchor" href="#用户分类" aria-label="Permalink to &quot;用户分类&quot;">​</a></h2><p>Linux 系统是一种多用户系统，它将文件访问者身份分为三种：</p><h3 id="文件所有者-owner" tabindex="-1">文件所有者（Owner） <a class="header-anchor" href="#文件所有者-owner" aria-label="Permalink to &quot;文件所有者（Owner）&quot;">​</a></h3><blockquote><p>当创建一个用户的时候，Linux 会为该用户创建一个主目录，路径为 <code>/home/&lt;username&gt;</code>，我们可以使用 <code>cd ~</code>，快捷进入主目录。如果你想放一个私密文件，就可以放在自己的主目录里，然后设置只能自己查看。</p></blockquote><h3 id="群组-group" tabindex="-1">群组（Group） <a class="header-anchor" href="#群组-group" aria-label="Permalink to &quot;群组（Group）&quot;">​</a></h3><blockquote><p>每个用户都有一个用户组，方便多人操作的时候，为一群人分配权限。当创建用户的时候，会自动创建一个与它同名的用户组。如果一个用户同时属于多个组，用户需要在用户组之间切换，才能具有其他用户组的权限。</p></blockquote><h3 id="其他人-others" tabindex="-1">其他人（Others） <a class="header-anchor" href="#其他人-others" aria-label="Permalink to &quot;其他人（Others）&quot;">​</a></h3><blockquote><p>既不是文件所有者又不是文件所属群组成员的用户，就是其他人。</p></blockquote><h3 id="超级用户-root" tabindex="-1">超级用户（Root） <a class="header-anchor" href="#超级用户-root" aria-label="Permalink to &quot;超级用户（Root）&quot;">​</a></h3><blockquote><p>Root 用户是一类特殊的用户，该用户可以访问所有文件。</p></blockquote><h2 id="用户-组-家目录" tabindex="-1">用户，组，家目录 <a class="header-anchor" href="#用户-组-家目录" aria-label="Permalink to &quot;用户，组，家目录&quot;">​</a></h2><ol><li>Linux系统是一个多用户多任务的操作系统，任何一个要使用系统资源的用户，都必须首先向系统管理员申请一个账号，然后以这个账号的身份进入系统。</li><li>Linux的用户需要至少要属于一个组。</li></ol><h3 id="添加用户" tabindex="-1">添加用户 <a class="header-anchor" href="#添加用户" aria-label="Permalink to &quot;添加用户&quot;">​</a></h3><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">useradd 用户名</span></span>
<span class="line"><span style="color:#A6ACCD;">useradd </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">选项</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> 用户名</span></span></code></pre></div><ul><li>当创建用户成功后，会默认在/home目录下自动的创建和用户同名的家目录。</li><li>也可以通过useradd -d 指定目录 新的用户名 指定家文件夹。</li></ul><h3 id="指定-修改密码" tabindex="-1">指定/修改密码 <a class="header-anchor" href="#指定-修改密码" aria-label="Permalink to &quot;指定/修改密码&quot;">​</a></h3><p>passwd 命令用来更改使用者的密码，需要根据提示输入一次旧密码和两次新密码。</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">passwd 用户名</span></span></code></pre></div><h3 id="删除用户" tabindex="-1">删除用户 <a class="header-anchor" href="#删除用户" aria-label="Permalink to &quot;删除用户&quot;">​</a></h3><p>保留家目录：userdel 用户名，<strong>一般保留家目录，因为干过的活要留着</strong>。</p><p>删除用户以及家目录：userdel -r 用户名</p><h3 id="查询用户信息" tabindex="-1">查询用户信息 <a class="header-anchor" href="#查询用户信息" aria-label="Permalink to &quot;查询用户信息&quot;">​</a></h3><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">查询用户信息：id 用户名</span></span>
<span class="line"><span style="color:#A6ACCD;">查看当前用户</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">登录用户：who am i</span></span></code></pre></div><h3 id="切换用户" tabindex="-1">切换用户 <a class="header-anchor" href="#切换用户" aria-label="Permalink to &quot;切换用户&quot;">​</a></h3><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">su </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;"> 切换用户名</span></span>
<span class="line"><span style="color:#A6ACCD;">su </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;"> ren</span></span>
<span class="line"><span style="color:#A6ACCD;">su </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;"> root</span></span></code></pre></div><p><strong>从权限高切换到权限低的用户不需要输密码</strong>。</p><p>返回切换前的用户：logout</p><h3 id="用户授权⭐" tabindex="-1">用户授权⭐ <a class="header-anchor" href="#用户授权⭐" aria-label="Permalink to &quot;用户授权⭐&quot;">​</a></h3><p>但是由于创建的用户权限较低，有的时候我们需要为用户提权，此时我们可以这样做：</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 会打开 sudoers 配置文件</span></span>
<span class="line"><span style="color:#A6ACCD;">sudo visudo</span></span></code></pre></div><p>注意同样是编辑 <code>sudoers</code> 配置文件，使用这个命令会比使用 <code>sudo vim /etc/ sudoers</code> 更安全， 除了对语法有校验，并且还会在多用户编辑的时候锁住文件。</p><p>打开 <code>sudoers</code> 配置文件后，我们添加这样一行配置：</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> Allow git to run any commands anywhere</span></span>
<span class="line"><span style="color:#A6ACCD;">renshuo ALL</span><span style="color:#89DDFF;">=(</span><span style="color:#A6ACCD;">ALL:ALL</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> ALL</span></span></code></pre></div><p>简单解释下这句话 <code>git ALL=(ALL:ALL) ALL</code>：</p><ul><li>git 表示规则应用的用户名</li><li>第一个 <code>ALL</code> 表示规则应用于所有 hosts</li><li>第二个 <code>ALL</code> 表示规则应用于所有 users</li><li>第三个 <code>ALL</code> 表示规则应用于所有 groups</li><li>第四个 <code>ALL</code> 表示规则应用于所有 commands</li></ul><p>我们保存退出后，<code>git</code> 用户就会获得 root 权限。</p><h2 id="用户组" tabindex="-1">用户组 <a class="header-anchor" href="#用户组" aria-label="Permalink to &quot;用户组&quot;">​</a></h2><p>用户组：类似于角色，系统可以对有共性的多个用户进行统一的管理。</p><h3 id="增删改用户组" tabindex="-1">增删改用户组 <a class="header-anchor" href="#增删改用户组" aria-label="Permalink to &quot;增删改用户组&quot;">​</a></h3><p>如果创建用户时没有指定组，那么它会自动生成和用户名相同的组，用id 用户名即可发现</p><ul><li>增加组：groupadd 组名</li><li>删除组：groupdel 组名</li><li>增加用户时直接加上组：useradd -g 用户组 用户名</li><li>修改用户所在组：usermod -g 用户组 用户名</li></ul><h3 id="用户和组相关文件" tabindex="-1">用户和组相关文件 <a class="header-anchor" href="#用户和组相关文件" aria-label="Permalink to &quot;用户和组相关文件&quot;">​</a></h3><p>/etc/passwd 文件</p><ul><li>用户（user）的配置文件，记录用户的各种信息。</li><li>每行的含义：用户名：口令：用户标识号：注释性描述：主目录：登录shell</li></ul><p>/etc/shadow 文件</p><ul><li>口令配置文件</li><li>每行的含义：登录名：加密口令：最后一次修改时间：最小时间间隔：最大时间间隔：警告时间：不活动时间：失效时间：标志</li></ul><p>/etc/group 文件</p><ul><li>组（group）的配置文件，记录Linux包含的组的信息。</li><li>每行含义：组名：口令：组标识号：组内用户列表</li></ul><h1 id="时间和日期" tabindex="-1">时间和日期 <a class="header-anchor" href="#时间和日期" aria-label="Permalink to &quot;时间和日期&quot;">​</a></h1><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">date</span><span style="color:#A6ACCD;"> [-d] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">+格式化字符串</span><span style="color:#89DDFF;">]</span></span></code></pre></div><ul><li>-d 按照给定的字符串显示日期，一般用于日期计算</li><li>格式化字符串：通过特定的字符串标记，来控制显示的日期格式</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032052544.png" alt="image-20221103205212463" style="zoom:80%;"><h2 id="获取时间" tabindex="-1">获取时间 <a class="header-anchor" href="#获取时间" aria-label="Permalink to &quot;获取时间&quot;">​</a></h2><p>由于中间带有空格，所以使用双引号包围格式化字符串，作为整体</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">date </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示当前日期和时间</span></span>
<span class="line"><span style="color:#A6ACCD;">date </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+%Y</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示当前年份</span></span>
<span class="line"><span style="color:#A6ACCD;">date </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+%m</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示当前月份</span></span>
<span class="line"><span style="color:#A6ACCD;">date </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+%d</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示当前天</span></span>
<span class="line"><span style="color:#A6ACCD;">date </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+%H:%M:%S</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示时分秒</span></span>
<span class="line"><span style="color:#A6ACCD;">date </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+%Y-%m-%d %H:%M:%S</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示年</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">月</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">日 时：分：秒</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209251827275.png" alt="image-20220925182710146" style="zoom:80%;"><h2 id="日期计算" tabindex="-1">日期计算 <a class="header-anchor" href="#日期计算" aria-label="Permalink to &quot;日期计算&quot;">​</a></h2><blockquote><p>-d选项，可以按照给定的字符串显示日期，一般用于日期计算，-d选项可以和 格式化字符串配合一起使用哦</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032054541.png" alt="image-20221103205432424" style="zoom:67%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">date</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+1 day</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#FFCB6B;">date</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+1 month</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">+%Y--%m--%d</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032059370.png" alt="image-20221103205921269" style="zoom:80%;"><p>其中支持的时间标记为</p><p><strong>year年</strong>、<strong>month月</strong>、<strong>day天</strong>、<strong>hour小时</strong>、<strong>minute分钟</strong>、<strong>second秒</strong></p><h2 id="修改linux时区" tabindex="-1">修改Linux时区 <a class="header-anchor" href="#修改linux时区" aria-label="Permalink to &quot;修改Linux时区&quot;">​</a></h2><p>细心的同学可能会发现，通过date查看的日期时间是不准确的，这是因为：系统默认时区非中国的东八区。</p><p>将系统自带的localtime文件删除，并将/usr/share/zoneinfo/Asia/Shanghai文件链接为localtime文件即可</p><p>使用root权限，执行如下命令，修改时区为东八区时区</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-rf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/localtime</span></span>
<span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ln</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/usr/share/zoneinfo/Asia/Shanghai</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/localtime</span></span></code></pre></div><h2 id="设置和自动校准系统时间" tabindex="-1">设置和自动校准系统时间 <a class="header-anchor" href="#设置和自动校准系统时间" aria-label="Permalink to &quot;设置和自动校准系统时间&quot;">​</a></h2><blockquote><p>设置日期：date -s 字符串时间</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 设置系统时间</span></span>
<span class="line"><span style="color:#FFCB6B;">date</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">2017-06-19 20:52:18</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><p>我们可以通过ntp程序自动校准系统时间</p><p>安装：ntp：yum -y install ntp</p><p>启动并设置开机自启：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">start</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ntpd</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">enable</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ntpd</span></span></code></pre></div><p>当ntpd启动后会定期的帮助我们联网校准系统的时间</p><p>也可以手动校准（需root权限）：ntpdate -u ntp.aliyun.com</p><p>通过阿里云提供的服务网址配合ntpdate（安装ntp后会附带这个命令）命令自动校准</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 同步恢复系统时间</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 没有ntpdate命令时，可先输入以下代码进行安装</span></span>
<span class="line"><span style="color:#FFCB6B;">yum</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">install</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ntpdate</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 输入同步时间代码</span></span>
<span class="line"><span style="color:#FFCB6B;">ntpdate</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-u</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">cn.pool.ntp.org</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252135635.png" alt="image-20220925213523505" style="zoom:80%;"><h2 id="cal-查看日历" tabindex="-1">cal 查看日历 <a class="header-anchor" href="#cal-查看日历" aria-label="Permalink to &quot;cal 查看日历&quot;">​</a></h2><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示当前月份</span></span>
<span class="line"><span style="color:#A6ACCD;">cal</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示当前年的月份</span></span>
<span class="line"><span style="color:#A6ACCD;">cal </span><span style="color:#F78C6C;">2017</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252128807.png" alt="image-20220925212810619" style="zoom:80%;"><h1 id="文件管理" tabindex="-1">文件管理 <a class="header-anchor" href="#文件管理" aria-label="Permalink to &quot;文件管理&quot;">​</a></h1><h2 id="ls-列出目录" tabindex="-1">ls 列出目录 <a class="header-anchor" href="#ls-列出目录" aria-label="Permalink to &quot;ls 列出目录&quot;">​</a></h2><blockquote><p><strong>显示指定工作目录下的内容及属性信息</strong>：ls命令为英文单词 list 的缩写，正如英文单词 list 的意思，其功能是列出指定目录下的内容及其相关属性信息。默认状态下，ls命令会列出当前目录的内容。而带上参数后，我们可以用ls做更多的事情。作为最基础同时又是使用频率很高的命令，我们很有必要搞清楚ls命令的用法</p></blockquote><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">显示所有文件及目录 (包括以“.”开头的隐藏文件)</td></tr><tr><td style="text-align:left;">-d</td><td style="text-align:left;">仅列出目录本身，而不是列出目录内的文件数据(常用)</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">使用长格式列出文件及目录信息</td></tr><tr><td style="text-align:left;">-r</td><td style="text-align:left;">将文件以相反次序显示(默认依英文字母次序)</td></tr><tr><td style="text-align:left;">-t</td><td style="text-align:left;">根据最后的修改时间排序</td></tr><tr><td style="text-align:left;">-A</td><td style="text-align:left;">同 -a ，但不列出 “.” (当前目录) 及 “..” (父目录)</td></tr><tr><td style="text-align:left;">-S</td><td style="text-align:left;">根据文件大小排序</td></tr><tr><td style="text-align:left;">-R</td><td style="text-align:left;">递归列出所有子目录</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">在输出的第一列显示文件i的节点号</td></tr><tr><td style="text-align:left;">-k</td><td style="text-align:left;">显示文件大小，以k为单位</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">显示每个文件所用的空间</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 基本语法</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> [选项] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">文件</span><span style="color:#89DDFF;">]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 当不使用选项和参数，直接使用ls命令本体，表示：以平铺形式，列出当前工作目录下的内容</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># -a选项，表示：all的意思，即列出全部文件（包含隐藏的文件/文件夹）</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># -l选项，表示：以列表（竖向排列）的形式展示内容，并展示更多信息</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># -h 表示以易于阅读的形式，列出文件大小，如K、M、G -h选项必须要搭配 -l 一起使用</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-alh</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 列出根目录(/)下的所有目录：</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 列出当前工作目录下所有名称是 “s” 开头的文件（不包含文件夹哦~） :</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ltr</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">s</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 列出 /root 目录下的所有目录及文件的详细信息 :</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-lR</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 列出当前工作目录下所有文件及目录并以文件的大小进行排序 :</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-AS</span></span></code></pre></div><h2 id="cp-复制-粘贴-重命名" tabindex="-1">cp 复制|粘贴|重命名 <a class="header-anchor" href="#cp-复制-粘贴-重命名" aria-label="Permalink to &quot;cp 复制|粘贴|重命名&quot;">​</a></h2><blockquote><p>cp命令可以理解为英文单词copy的缩写，其功能为复制文件或目录。cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下，也可以同时复制多个文件到一个指定的目录中。</p></blockquote><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-f</td><td style="text-align:left;">若目标文件已存在，则会直接覆盖原文件</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">若目标文件已存在，则会询问是否覆盖</td></tr><tr><td style="text-align:left;">-p</td><td style="text-align:left;">保留源文件或目录的所有属性</td></tr><tr><td style="text-align:left;">-r</td><td style="text-align:left;">递归复制文件和目录</td></tr><tr><td style="text-align:left;">-d</td><td style="text-align:left;">当复制符号连接时，把目标文件或目录也建立为符号连接，并指向与源文件或目录连接的原始文件或目录</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">对源文件建立硬连接，而非复制文件</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">对源文件建立符号连接，而非复制文件</td></tr><tr><td style="text-align:left;">-b</td><td style="text-align:left;">覆盖已存在的文件目标前将目标文件备份</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">详细显示cp命令执行的操作过程</td></tr><tr><td style="text-align:left;">-a</td><td style="text-align:left;">等价于“dpr”选项</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 复制目录</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir2/</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 将文件test1改名为test2</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test2</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 复制多个文件</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file3</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 交互式地将目录 /home/lucifer 中的所有.c文件复制到目录 dir 中</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home/lucifer/</span><span style="color:#A6ACCD;">*</span><span style="color:#C3E88D;">.c</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 递归复制整个文件夹</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nginx-1.21.6</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nginx-1.21.7</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nginx-1.21.6</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nginx-1.21.7</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 加-v显示复制过程</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">–v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zip.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zip3.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 加-r递归复制</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nginx-1.21.6</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nginx-1.21.8</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 复制并强制覆盖同名文件</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xxx.log</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 复制文件夹</span></span>
<span class="line"><span style="color:#FFCB6B;">cp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xxx</span><span style="color:#89DDFF;">(</span><span style="color:#FFCB6B;">源文件夹</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yyy</span><span style="color:#89DDFF;">(</span><span style="color:#FFCB6B;">目标文件夹</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 远程复制</span></span>
<span class="line"><span style="color:#FFCB6B;">scp</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-P</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ssh端口</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">username@10.10.10.101:/home/username/xxx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home/xxx</span></span></code></pre></div><p><strong>操作示例:</strong></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011047672.png" alt="image-20210811180508369"></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011047673.png" alt="image-20210811180638556"></p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011047672.png" alt="image-20210811180914417"></p><h2 id="mkdir-创建目录" tabindex="-1">mkdir 创建目录 <a class="header-anchor" href="#mkdir-创建目录" aria-label="Permalink to &quot;mkdir 创建目录&quot;">​</a></h2><blockquote><p>mkdir命令是“make directories”的缩写，用来创建目录。<strong>📢 注意：</strong> 默认状态下，如果要创建的目录已经存在，则提示已存在，而不会继续创建目录。所以在创建目录时，应保证新建的目录与它所在目录下的文件没有重名。mkdir命令还可以同时创建多个目录，是不是很强大呢？</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-p</td><td style="text-align:left;">递归创建多级目录</td></tr><tr><td style="text-align:left;">-m</td><td style="text-align:left;">建立目录的同时设置目录的权限</td></tr><tr><td style="text-align:left;">-z</td><td style="text-align:left;">设置安全上下文</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">显示目录的创建过程</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 在当前目录下，建立一个名为itcast的子目录</span></span>
<span class="line"><span style="color:#FFCB6B;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 同时创建子目录dir1，dir2，dir3</span></span>
<span class="line"><span style="color:#FFCB6B;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">dir3</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在目录/home/lucifer下建立子目录dir，并且设置文件属主有读、写和执行权限，其他人无权访问</span></span>
<span class="line"><span style="color:#FFCB6B;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-m</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">700</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home/lucifer/dir</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在工作目录下的itcast目录中建立一个名为test的子目录，若itcast目录不存在，则建立一个</span></span>
<span class="line"><span style="color:#FFCB6B;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast/test</span><span style="color:#A6ACCD;">   </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 批量创建文件夹, 会在test,main下都创建java, resources文件夹</span></span>
<span class="line"><span style="color:#FFCB6B;">mkdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">src/{test,main}/{java,resources}</span></span></code></pre></div><p><strong>操作演示:</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011107500.png" alt="image-20210810234541073" style="zoom:80%;"><h2 id="mv-移动-改名" tabindex="-1">mv 移动|改名 <a class="header-anchor" href="#mv-移动-改名" aria-label="Permalink to &quot;mv  移动|改名&quot;">​</a></h2><blockquote><p>mv命令是“move”单词的缩写，其功能大致和英文含义一样，可以移动文件或对其改名。这是一个使用频率超高的文件管理命令，我们需要特别留意它与复制的区别：mv与cp的结果不同。mv命令好像文件“搬家”，文件名称发生改变，但个数并未增加。而cp命令是对文件进行复制操作，文件个数是有增加的。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-i</td><td style="text-align:left;">若存在同名文件，则向用户询问是否覆盖</td></tr><tr><td style="text-align:left;">-f</td><td style="text-align:left;">覆盖已有文件时，不进行任何提示</td></tr><tr><td style="text-align:left;">-b</td><td style="text-align:left;">当文件存在时，覆盖前为其创建一个备份</td></tr><tr><td style="text-align:left;">-u</td><td style="text-align:left;">当源文件比目标文件新，或者目标文件不存在时，才执行移动此操作</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hi.txt</span><span style="color:#A6ACCD;">                 </span><span style="color:#C3E88D;">将hello.txt改名为hi.txt</span></span>
<span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hi.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itheima/</span><span style="color:#A6ACCD;">                  </span><span style="color:#C3E88D;">将文件hi.txt移动到itheima目录中</span></span>
<span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hi.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itheima/hello.txt</span><span style="color:#A6ACCD;">   	    </span><span style="color:#C3E88D;">将hi.txt移动到itheima目录中，并改名为hello.txt</span></span>
<span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itheima/</span><span style="color:#A6ACCD;">                 </span><span style="color:#C3E88D;">如果itheima目录不存在，将itcast目录改名为itheima</span></span>
<span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itheima/</span><span style="color:#A6ACCD;">                 </span><span style="color:#C3E88D;">如果itheima目录存在，将itcast目录移动到itheima目录中</span></span>
<span class="line"><span style="color:#FFCB6B;">mv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dir1/</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">.</span><span style="color:#A6ACCD;">                        </span><span style="color:#C3E88D;">将目录dir1下的文件移动到当前目录下</span></span></code></pre></div><p><strong>操作示例:</strong></p><p>mv 命令既能够改名，又可以移动，具体是改名还是移动,系统会根据我们输入的参数进行判定(如果第二个参数dest是一个已存在的目录,将执行移动操作,其他情况都是改名)</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011047678.png" alt="image-20210811184240003"></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061434682.png" alt="image-20221106143407517" style="zoom:80%;"><h2 id="pwd-显示当前路径" tabindex="-1">pwd 显示当前路径 <a class="header-anchor" href="#pwd-显示当前路径" aria-label="Permalink to &quot;pwd 显示当前路径&quot;">​</a></h2><blockquote><p>pwd命令是“print working directory”中每个单词的首字母缩写，其功能正如所示单词一样，为打印工作目录，即显示当前工作目录的绝对路径。在实际工作中，我们经常会在不同目录之间进行切换，为了防止“迷路”，我们可以使用pwd命令快速查看当前我们所在的目录路径。</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">pwd</span></span>
<span class="line"><span style="color:#82AAFF;">pwd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-P</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># -P ：显示出确实的路径，而非使用连结 (link) 路径</span></span></code></pre></div><h2 id="rm-删除文件" tabindex="-1">rm 删除文件 <a class="header-anchor" href="#rm-删除文件" aria-label="Permalink to &quot;rm 删除文件&quot;">​</a></h2><blockquote><p>rm是常用的命令，该命令的功能为删除一个目录中的一个或多个文件或目录，它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件，只是删除了链接，原有文件均保持不变。</p></blockquote><blockquote><p><strong>📢 注意：</strong> rm也是一个危险的命令，使用的时候要特别当心，尤其对于新手，否则整个系统就会毁在这个命令（比如在/（根目录）下执行rm * -rf）。所以，我们在执行rm之前最好先确认一下在哪个目录，到底要删除什么东西，操作时保持高度清醒的头脑。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-f</td><td style="text-align:left;">忽略不存在的文件，不会出现警告信息</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">删除前会询问用户是否操作</td></tr><tr><td style="text-align:left;">-r/R</td><td style="text-align:left;">递归删除</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">显示指令的详细执行过程</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 删除前逐一询问确认</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test.txt.bz2</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 直接删除，不会有任何提示</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test.txt.bz2</span><span style="color:#A6ACCD;">  </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 递归删除目录及目录下所有文件</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-rf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/data/log</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 删除当前目录下所有文件,*表示通配符，例如test*，*test，*test*</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-rf</span><span style="color:#A6ACCD;"> </span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 清空系统中所有的文件（谨慎）</span></span>
<span class="line"><span style="color:#FFCB6B;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-rf</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;">*</span></span></code></pre></div><h2 id="touch创建空文件" tabindex="-1">touch创建空文件 <a class="header-anchor" href="#touch创建空文件" aria-label="Permalink to &quot;touch创建空文件&quot;">​</a></h2><p>touch命令无选项，参数必填，表示要创建的文件路径，相对、绝对、特殊路径符均可以使用。touch 命令用于修改文件或者目录的时间属性，包括存取时间和更改时间。若文件不存在，系统会建立一个新的文件。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">touch</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件名称</span></span>
<span class="line"><span style="color:#FFCB6B;">touch</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xiyou/dssz/sunwukong.txt</span></span></code></pre></div><p>如果不添加任何参数，就会将文件的修改时间改为当前的系统时间。</p><h2 id="cd切换目录" tabindex="-1">cd切换目录 <a class="header-anchor" href="#cd切换目录" aria-label="Permalink to &quot;cd切换目录&quot;">​</a></h2><p>特殊路径符：</p><ul><li><p>.表示当前目录，比如 cd ./Desktop 表示切换到当前目录下的Desktop目录内，和cd Desktop效果一致</p></li><li><p>.. 表示上一级目录，比如：cd .. 即可切换到上一级目录，cd ../.. 切换到上二级的目录</p></li><li><p>~ 表示HOME目录，比如：cd ~ 即可切换到HOME目录或cd ~/Desktop，切换到HOME内的Desktop目录</p></li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209260932245.png" alt="image-20220926093208174" style="zoom:80%;"><div class="language-c"><button title="Copy Code" class="copy"></button><span class="lang">c</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">cd app 切换到app目录</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">cd .. 切换到上一层目录</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">cd </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">   切换到系统根目录</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">cd </span><span style="color:#89DDFF;">~</span><span style="color:#A6ACCD;">    切换到用户主目录</span></span>
<span class="line"></span>
<span class="line"><span style="color:#A6ACCD;">cd </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">   切换到上一次所在目录</span></span></code></pre></div><blockquote><p>注意：使用cd ..是返回上一级目录，比如usr/bin，bin的上一级就是usr。而 cd -，是返回上一次所在目录，比如第一次在usr目录，然后直接cd /到根目录，使用这个命令能快速回到usr目录。使用tab键来补全文件路径</p></blockquote><blockquote><ul><li>cd命令无需选项，只有参数，表示要切换到哪个目录下</li><li>cd命令直接执行，不写参数，表示回到用户的HOME目录</li></ul></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061423772.png" alt="image-20221106142344643" style="zoom:80%;"><h2 id="rmdir-删除空目录" tabindex="-1">rmdir 删除空目录 <a class="header-anchor" href="#rmdir-删除空目录" aria-label="Permalink to &quot;rmdir 删除空目录&quot;">​</a></h2><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">作用:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">删除空目录</span></span>
<span class="line"><span style="color:#FFCB6B;">语法:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rmdir</span><span style="color:#A6ACCD;"> [-p] dirName</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">说明:</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span><span style="color:#FFCB6B;">-p:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">当子目录被删除后使父目录为空目录的话，则一并删除</span></span>
<span class="line"><span style="color:#FFCB6B;">举例:</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#FFCB6B;">rmdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast</span><span style="color:#A6ACCD;">   </span><span style="color:#C3E88D;">删除名为itcast的空目录</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#676E95;font-style:italic;"># 删除itcast目录中名为test的子目录，若test目录删除后itcast目录变为空目录，则也被删除</span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#FFCB6B;">rmdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast/test</span><span style="color:#A6ACCD;">  </span></span>
<span class="line"><span style="color:#A6ACCD;">    </span><span style="color:#FFCB6B;">rmdir</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;">   </span><span style="color:#C3E88D;">删除名称以itcast开始的空目录</span></span></code></pre></div><p><strong>操作演示:</strong></p><p>A. 删除空目录</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011059546.png" alt="image-20210810235044921"></p><p>B. 删除非空目录</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011059549.png" alt="image-20210810235221722"></p><p>C. 使用*通配符删除目录</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011059551.png" alt="image-20210810235305140"></p><blockquote><p>*: 是一个通配符，代表任意字符；</p><p>rmdir itcast* : 删除以itcast开头的目录</p><p>rmdir *itcast : 删除以itcast结尾的目录</p></blockquote><h2 id="file-查看文件类型" tabindex="-1">file 查看文件类型 <a class="header-anchor" href="#file-查看文件类型" aria-label="Permalink to &quot;file 查看文件类型&quot;">​</a></h2><blockquote><p><code>file</code>命令将返回文件的类型信息，例如文本文件、图像文件、二进制文件等。它可能还提供更详细的文件格式或编码信息，以及其他有关文件的附加描述。根据操作系统和命令行环境的不同，<code>file</code>命令的输出可能会有所不同</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">file</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件名</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202305041119378.png" alt="image-20230504111906280" style="zoom:80%;"><h2 id="diff-比较两个文件" tabindex="-1">diff 比较两个文件 <a class="header-anchor" href="#diff-比较两个文件" aria-label="Permalink to &quot;diff 比较两个文件&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight has-diff"><code><span class="line"><span style="color:#A6ACCD;">diff -u 1.txt 2.txt</span></span></code></pre></div><h1 id="文本操作" tabindex="-1">文本操作 <a class="header-anchor" href="#文本操作" aria-label="Permalink to &quot;文本操作&quot;">​</a></h1><h2 id="cat连接文件并打印输出" tabindex="-1">cat连接文件并打印输出 <a class="header-anchor" href="#cat连接文件并打印输出" aria-label="Permalink to &quot;cat连接文件并打印输出&quot;">​</a></h2><blockquote><p>查看文件内容，从第一行开始显示,一般查看比较小的文件，一屏幕能显示全的。</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> [选项] 要查看的文件</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261025219.png" alt="image-20220926102518151" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 查看文件内容并显示行号</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span></span></code></pre></div><p>清空 index.html 内容：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/null</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span></code></pre></div><p>把 index.html 的内容 <strong>覆盖写入</strong> second.html：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">second.html</span></span></code></pre></div><p>把 index.html 的内容<strong>追加写入</strong> second.html：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">second.html</span></span></code></pre></div><p>使用 cat filename1 filename2 &gt;&gt; filename3 可以连接两个文件（1 和 2）并将它们的输出内容存储在一个新文件3中。</p><p>把 index.html 和 second.html 追加写入 third.html：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">second.html</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">third.html</span></span></code></pre></div><h2 id="more-文件内容分屏查看器" tabindex="-1">more 文件内容分屏查看器 <a class="header-anchor" href="#more-文件内容分屏查看器" aria-label="Permalink to &quot;more 文件内容分屏查看器&quot;">​</a></h2><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">作用: 以分页的形式显示文件内容</span></span>
<span class="line"><span style="color:#A6ACCD;">语法: more fileName</span></span>
<span class="line"><span style="color:#A6ACCD;"></span></span>
<span class="line"><span style="color:#A6ACCD;">操作说明:</span></span>
<span class="line"><span style="color:#A6ACCD;">    回车键 	向下滚动一行</span></span>
<span class="line"><span style="color:#A6ACCD;">    空格键 	向下滚动一屏</span></span>
<span class="line"><span style="color:#A6ACCD;">    b 		返回上一屏</span></span>
<span class="line"><span style="color:#A6ACCD;">    q或者Ctrl+C	退出more</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span></span>
<span class="line"><span style="color:#A6ACCD;">举例：</span></span>
<span class="line"><span style="color:#A6ACCD;">	more /etc/profile		以分页方式显示/etc目录下的profile文件内容</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261028088.png" alt="image-20220926102852015" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261029457.png" alt="image-20220926102904393" style="zoom:80%;"><p><strong>操作示例：</strong></p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011338291.png" alt="image-20210810232212430" style="zoom:80%;"><p>当我们在查看一些比较大的文件时，我们可能需要经常查询文件尾部的数据信息，那这个时候如果文件很大，我们要一直向下翻页，直到最后一页，去看最新添加的数据，这种方式就比较繁琐了，此时，我们可以借助于tail指令。</p><h2 id="less-分屏显示文件内容" tabindex="-1">less 分屏显示文件内容 <a class="header-anchor" href="#less-分屏显示文件内容" aria-label="Permalink to &quot;less 分屏显示文件内容&quot;">​</a></h2><p>less 指令用来分屏查看文件内容，它的功能与 more 指令类似，但是比 more 指令更加 强大，支持各种显示终端。less 指令在显示文件内容时，并不是一次将整个文件加载之后 才显示，而是根据显示需要加载内容，对于显示大型文件具有较高的效率。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">less</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">要查看的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">less</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">smartd.conf</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261030360.png" alt="image-20220926103012285" style="zoom:80%;"><h2 id="echo内容打印输出" tabindex="-1">echo内容打印输出 <a class="header-anchor" href="#echo内容打印输出" aria-label="Permalink to &quot;echo内容打印输出&quot;">​</a></h2><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> [选项] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">输出内容</span><span style="color:#89DDFF;">]</span></span></code></pre></div><p>-e： 支持反斜线控制的字符转换</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209260954367.png" alt="image-20220926095450299" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209260955884.png" alt="image-20220926095504818" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">hello\tworld</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-e</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">hello\tworld</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">`</span><span style="color:#82AAFF;">pwd</span><span style="color:#89DDFF;">`</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 被`包围的内容，会被作为命令执行，而非普通字符</span></span></code></pre></div><h2 id="内容写入重定向符⭐" tabindex="-1">内容写入重定向符⭐ <a class="header-anchor" href="#内容写入重定向符⭐" aria-label="Permalink to &quot;内容写入重定向符⭐&quot;">​</a></h2><p>我们再来学习两个特殊符号，重定向符：&gt;和&gt;&gt;</p><p>•&gt;，将左侧命令的结果，<strong>覆盖写入</strong>到符号右侧指定的文件中</p><p>•&gt;&gt;，将左侧命令的结果，<strong>追加写入</strong>到符号右侧指定的文件中</p><p>创建或覆盖文件内容为 &quot;test content&quot;：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">test content</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span></code></pre></div><p>如果是想追加内容，就用 <code>&gt;&gt;</code> ：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">test content</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">test content</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span></code></pre></div><h2 id="head文件头部查看" tabindex="-1">head文件头部查看 <a class="header-anchor" href="#head文件头部查看" aria-label="Permalink to &quot;head文件头部查看&quot;">​</a></h2><blockquote><p>head 用于显示文件的开头部分内容，默认情况下 head 指令显示文件的前 10 行内容</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">head</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：查看文件头10行内容</span></span>
<span class="line"><span style="color:#FFCB6B;">head</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：查看文件头5行内容，5可以是任意行数</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209260953770.png" alt="image-20220926095328704" style="zoom:80%;"><h2 id="tail文件尾部查看⭐⭐" tabindex="-1">tail文件尾部查看⭐⭐ <a class="header-anchor" href="#tail文件尾部查看⭐⭐" aria-label="Permalink to &quot;tail文件尾部查看⭐⭐&quot;">​</a></h2><blockquote><p>tail 用于输出文件中尾部的内容，默认情况下 tail 指令显示文件的后 10 行内容</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：查看文件尾部10行内容</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：查看文件尾部5行内容，5可以是任意行数</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：实时追踪该文档的所有更新</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209260949221.png" alt="image-20220926094946156" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 查看文件尾 1 行内容</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 实时追踪该档的所有更新</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 实时追踪该档的所有更新,并且监控范围变成20行</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">20</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 如果做性能测试, 可以每执行一次, 往日志里面输出 “.” , </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 这样日志中的字节数就是实际的性能测试运行的次数, 还可以看见实时速率.</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xxx.log</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">pv</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-bt</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">作用:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">查看文件末尾的内容</span></span>
<span class="line"><span style="color:#FFCB6B;">语法:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">tail</span><span style="color:#A6ACCD;"> [-f] fileName</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">说明:-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">:</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">动态读取文件末尾内容并显示，通常用于日志文件的内容输出</span></span>
<span class="line"><span style="color:#A6ACCD;">	</span></span>
<span class="line"><span style="color:#FFCB6B;">举例:</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span><span style="color:#A6ACCD;">		</span><span style="color:#C3E88D;">显示/etc目录下的profile文件末尾10行的内容</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-20</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span><span style="color:#A6ACCD;">	</span><span style="color:#C3E88D;">显示/etc目录下的profile文件末尾20行的内容</span></span>
<span class="line"><span style="color:#FFCB6B;">tail</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/itcast/my.log</span><span style="color:#A6ACCD;">	</span><span style="color:#C3E88D;">动态读取/itcast目录下的my.log文件末尾内容并显示</span></span></code></pre></div><p><strong>操作示例：</strong></p><p>A. 默认查询文件尾部10行记录</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011107551.png" alt="image-20210810232758510"></p><p>B. 可以通过指定参数设置查询尾部指定行数的数据</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011107553.png" alt="image-20210810232947018"></p><p>C. 动态读取文件尾部的数据</p><p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011107555.png" alt="4"></p><p>在窗口1中执行指令 <code>tail -f 1.txt</code> 动态查看文件尾部的数据。然后在顶部的标签中右键选择 &quot;复制标签&quot;，打开新的窗口2 , 此时再新打开的窗口2中执行指令 <code>echo 1 &gt;&gt; 1.txt</code> , 往1.txt文件尾部追加内容，然后我们就可以在窗口1中看到最新的文件尾部的数据。如果我们不想查看文件尾部的数据了，可以直接使用快捷键 Ctrl+C ， 结束当前进程。</p><h2 id="重定向和追加⭐" tabindex="-1">重定向和追加⭐ <a class="header-anchor" href="#重定向和追加⭐" aria-label="Permalink to &quot;重定向和追加⭐&quot;">​</a></h2><blockquote><p>注意：ls-l可以换成任意命令，如ps，ifconfig等显示命令</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：列表的内容写入文件 a.txt 中（覆盖写）</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-al</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：列表的内容追加到文件 aa.txt 的末尾</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：将文件 1 的内容覆盖到文件 2</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">“内容”</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件</span></span></code></pre></div><blockquote><p>注意：此时houge.txt不需要自己创建，直接执行就行</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 将 ls 查看信息写入到文件中</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#89DDFF;">&gt;</span><span style="color:#C3E88D;">houge.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 将 ls 查看信息追加到文件中</span></span>
<span class="line"><span style="color:#FFCB6B;">ls</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#C3E88D;">houge.tx</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 采用 echo 将 hello 单词追加到文件中，是换行追加</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hell</span><span style="color:#A6ACCD;">o</span><span style="color:#89DDFF;">&gt;&gt;</span><span style="color:#C3E88D;">houge.txt</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209260946578.png" alt="image-20220926094632510" style="zoom:80%;"><h1 id="搜索查找⭐" tabindex="-1">搜索查找⭐ <a class="header-anchor" href="#搜索查找⭐" aria-label="Permalink to &quot;搜索查找⭐&quot;">​</a></h1><h2 id="which" tabindex="-1">which <a class="header-anchor" href="#which" aria-label="Permalink to &quot;which&quot;">​</a></h2><p>我们在前面学习的Linux命令，其实它们的本体就是一个个的二进制可执行程序。和Windows系统中的.exe文件，是一个意思。我们可以通过which命令，查看所使用的一系列命令的程序文件存放在哪里</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">which</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">要查找的命令</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061440590.png" alt="image-20221106144013484" style="zoom:80%;"><h2 id="find⭐" tabindex="-1">find⭐ <a class="header-anchor" href="#find⭐" aria-label="Permalink to &quot;find⭐&quot;">​</a></h2><blockquote><p>find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多，并且支持正则，功能强大。和管道结合使用可以实现复杂的功能，是系统管理者和普通用户必须掌握的命令。find如不加任何参数，表示查找当前路径下的所有文件和目录，如果服务器负载比较高尽量不要在高峰期使用find命令，<strong>find命令模糊搜索还是比较消耗系统资源的</strong>。</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> [参数] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">路径</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">查找和搜索范围</span><span style="color:#89DDFF;">]</span></span></code></pre></div><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-name</td><td style="text-align:left;">按名称查找</td></tr><tr><td style="text-align:left;">-size</td><td style="text-align:left;">按大小查找</td></tr><tr><td style="text-align:left;">-user</td><td style="text-align:left;">按属性查找</td></tr><tr><td style="text-align:left;">-type</td><td style="text-align:left;">按类型查找</td></tr><tr><td style="text-align:left;">-iname</td><td style="text-align:left;">忽略大小写</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 使用-name参数查看/etc目录下面所有的.conf结尾的配置文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.conf</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 使用-size参数查看/etc目录下面大于1M的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-size</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+1M</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查找当前用户主目录下的所有文件：</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> $HOME </span><span style="color:#C3E88D;">-print</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 列出当前目录及子目录下所有文件和文件夹</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">.</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在/home目录下查找以.txt结尾的文件名：</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.txt</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在/var/log目录下忽略大小写查找以.log结尾的文件名</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/var/log</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-iname</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.log</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 搜索超过七天内被访问过的所有文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">.</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-type</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-atime</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+7</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 搜索访问时间超过10分钟的所有文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">.</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-type</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">f</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-amin</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+10</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 找出/home下不是以.txt结尾的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">!</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.txt</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><h3 id="根据文件名查找⭐" tabindex="-1">根据文件名查找⭐ <a class="header-anchor" href="#根据文件名查找⭐" aria-label="Permalink to &quot;根据文件名查找⭐&quot;">​</a></h3><p>被查找文件名，支持使用通配符 * 来做模糊查询。基于通配符的含义，可以结合find命令做文件的模糊查询。</p><ul><li><p>test*，表示匹配任何以test开头的内容</p></li><li><p>*test，表示匹配任何以test结尾的内容</p></li><li><p>*test*，表示匹配任何包含test的内容</p></li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 按文件名：根据名称查找/目录下的filename.txt文件，可以是任意目录，不一定非在根目录</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.txt</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在根目录查找my.cnf文件位置</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">my.cnf</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查找文件名称是以ins开头的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">ins*</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在当前目录及其子目录下查找.java结尾文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">.</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">–name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.java</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;">		</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在/itcast目录及其子目录下查找.java结尾的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">/itcast</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">*.java</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011033852.png" alt="image-20221101103311727" style="zoom:80%;"><h3 id="根据拥有者查找" tabindex="-1">根据拥有者查找 <a class="header-anchor" href="#根据拥有者查找" aria-label="Permalink to &quot;根据拥有者查找&quot;">​</a></h3><blockquote><p>按拥有者：查找/目录下，用户名称为-user的文件</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-user</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">renshuo</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-user</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">ren*</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><h3 id="按文件大小查找" tabindex="-1">按文件大小查找 <a class="header-anchor" href="#按文件大小查找" aria-label="Permalink to &quot;按文件大小查找&quot;">​</a></h3><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">起始路径</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-size</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+</span><span style="color:#89DDFF;">|</span><span style="color:#FFCB6B;">-n[kMG]</span></span></code></pre></div><blockquote><ul><li>+、- 表示大于和小于</li><li>n表示大小数字</li><li>kMG表示大小单位，k(小写字母)表示kb，M表示MB，G表示GB</li></ul></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-size</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+204800</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 在/home目录下查找大于200m的文件 </span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-size</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-10k</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 查找小于10KB的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-size</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+100M</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 查找大于100MB的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-size</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">+1G</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 查找大于1GB的文件</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 在目录下找后缀是.mysql的文件</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home/eagleye</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">*.mysql</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-print</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 会从 /usr 目录开始往下找，找最近3天之内存取过的文件。</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/usr</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-atime</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">–print</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 会从 /usr 目录开始往下找，找最近5天之内修改过的文件。</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/usr</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ctime</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">–print</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 会从 /doc 目录开始往下找，找jacky 的、文件名开头是 j的文件。  </span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/doc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-user</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">jacky</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">j*</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">–print</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 会从 /doc 目录开始往下找，找寻文件名是 ja 开头或者 ma开头的文件。</span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/doc</span><span style="color:#A6ACCD;"> \( </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">ja*</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o-</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">ma*</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> \) </span><span style="color:#C3E88D;">–print</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 会从 /doc 目录开始往下找，找到凡是文件名结尾为 bak的文件，把它删除掉。</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># -exec 选项是执行的意思，rm 是删除命令，{ } 表示文件名，“\;”是规定的命令结尾。 </span></span>
<span class="line"><span style="color:#FFCB6B;">find</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/doc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-name</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">*bak</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-exec</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">rm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">{}</span><span style="color:#A6ACCD;"> \;</span></span></code></pre></div><h2 id="locate" tabindex="-1">locate <a class="header-anchor" href="#locate" aria-label="Permalink to &quot;locate&quot;">​</a></h2><blockquote><p>可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。<strong>locate指令无需遍历整个文件系统，查询速度较快</strong>。<strong>为了保证查询结果的准确度，管理员必须定期更新locate时刻</strong>。由于 locate 指令基于数据库进行查询，所以第一次运行前，必须使用 updatedb 指令创 建 locate 数据库。locate 的速度比 find 快，它并不是真的查找，而是查数据库，一般文件数据库在 /var/lib/slocate/slocate.db 中，<strong>所以 locate 的查找并不是实时的，而是以数据库的更新</strong>为准</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">locate</span><span style="color:#A6ACCD;"> [-d </span><span style="color:#C3E88D;">][--help][--version][范本样式...]</span></span></code></pre></div><p><strong>参数说明：</strong></p><ul><li>-b, --basename -- 仅匹配路径名的基本名称</li><li>-c, --count -- 只输出找到的数量</li><li>-e, --existing -- 仅打印当前现有文件的条目</li><li>-q -- 安静模式，不会显示任何错误讯息。</li><li>-l, --limit, -n LIMIT -- 将输出（或计数）限制为LIMIT个条目</li><li>-n -- 至多显示 n个输出。</li><li>-q, --quiet -- 安静模式，不会显示任何错误讯息</li><li>-h, --help -- 显示帮助</li><li>-i, --ignore-case -- 忽略大小写</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 必须先更新数据库</span></span>
<span class="line"><span style="color:#FFCB6B;">updatedb</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查找a.txt，只显示前两个，一般准确的都在前两个，或者说是第一个</span></span>
<span class="line"><span style="color:#FFCB6B;">locate</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">a.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 直接查找a.txt</span></span>
<span class="line"><span style="color:#FFCB6B;">locate</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">a.txt</span></span></code></pre></div><h2 id="grep-强大的文本搜索" tabindex="-1">grep 强大的文本搜索 <a class="header-anchor" href="#grep-强大的文本搜索" aria-label="Permalink to &quot;grep 强大的文本搜索&quot;">​</a></h2><blockquote><p>grep是“global search regular expression and print out the line”的简称，意思是全面搜索正则表达式，并将其打印出来。这个命令可以结合正则表达式使用，它也是linux使用最为广泛的命令。grep命令的选项用于对搜索过程的补充，而其命令的模式十分灵活，可以是变量、字符串、正则表达式。需要注意的是：一当模式中包含了空格，务必要用双引号将其引起来。</p></blockquote><blockquote><p>linux系统支持三种形式的grep命令，大儿子就是grep，标准，模仿的代表。二儿子兴趣爱好多-egrep，简称扩展grep命令，其实和grep -E等价，支持基本和扩展的正则表达式。小儿子跑的最快-fgrep，简称快速grep命令，其实和grep -F等价，不支持正则表达式，按照字符串表面意思进行匹配。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-i</td><td style="text-align:left;">搜索时，忽略大小写</td></tr><tr><td style="text-align:left;">-c</td><td style="text-align:left;">只输出匹配行的数量</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">只列出符合匹配的文件名，不列出具体的匹配行</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">列出所有的匹配行，显示行号</td></tr><tr><td style="text-align:left;">-h</td><td style="text-align:left;">查询多文件时不显示文件名</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">不显示不存在、没有匹配文本的错误信息</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">显示不包含匹配文本的所有行</td></tr><tr><td style="text-align:left;">-w</td><td style="text-align:left;">匹配整词</td></tr><tr><td style="text-align:left;">-x</td><td style="text-align:left;">匹配整行</td></tr><tr><td style="text-align:left;">-r</td><td style="text-align:left;">递归搜索</td></tr><tr><td style="text-align:left;">-q</td><td style="text-align:left;">禁止输出任何结果，已退出状态表示搜索是否成功</td></tr><tr><td style="text-align:left;">-b</td><td style="text-align:left;">打印匹配行距文件头部的偏移量，以字节为单位</td></tr><tr><td style="text-align:left;">-o</td><td style="text-align:left;">与-b结合使用，打印匹配的词据文件头部的偏移量，以字节为单位</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 匹配关键字</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">keyword</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 反向匹配关键字</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">keyword</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查找匹配的内容的行数</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">keyworkd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 忽略大小写</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">keyword</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 遍历子目录内容</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ri</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">keyword</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 过滤条件内容并输出行号</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">keyword</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 正则匹配 J 开头的内容 </span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">^J</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 根据 word 匹配内容</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-w</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">doc</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 指定正则表达式</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-E</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">(a|b)</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 在文件中查找内容</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">yes</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test.py</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">print</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test.py</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">print</span></span>
<span class="line"><span style="color:#FFCB6B;">cat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test.py</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">print</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">lang</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">anaconda-ks.cfg</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">–color</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 高亮显示</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">Hello</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">HelloWorld.java</span><span style="color:#A6ACCD;">	</span><span style="color:#676E95;font-style:italic;"># 查找HelloWorld.java文件中出现的Hello字符串的位置</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello</span><span style="color:#A6ACCD;"> </span><span style="color:#A6ACCD;">*</span><span style="color:#C3E88D;">.java</span><span style="color:#A6ACCD;">		   </span><span style="color:#676E95;font-style:italic;"># 查找当前目录中所有.java结尾的文件中包含hello字符串的位置</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211011036455.png" alt="image-20221101103638341" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 支持多文件查询并支持使用通配符：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/hosts</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 输出匹配字符串行的数量：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 列出所有的匹配行，并显示行号：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示不包含模式的所有行：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-vc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 不再显示文件名：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 只列出符合匹配的文件名，不列出具体匹配的行：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 不显示不存在或无匹配的文本信息：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;">  </span><span style="color:#C3E88D;">-s</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 递归搜索，不仅搜索当前目录，还搜索子目录：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_2</span><span style="color:#A6ACCD;"> </span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 匹配整词，以字面意思去解释他，相当于精确匹配：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zw</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-w</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zw</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 匹配整行，文件中的整行与模式匹配时，才打印出来：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_</span><span style="color:#A6ACCD;">*</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 不输出任何结果，已退出状态表示结果：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-q</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $?</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-q</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_5</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $?</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-q</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">zwx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file5</span></span>
<span class="line"><span style="color:#82AAFF;">echo</span><span style="color:#A6ACCD;"> $?</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查找一个文件中的空行和非空行：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">^</span><span style="color:#A6ACCD;">$ </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">^[^</span><span style="color:#A6ACCD;">$</span><span style="color:#C3E88D;">]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 匹配任意或重复字符用“.”或“*”符号来实现：</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">^z.x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_1</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">^z</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">file_6</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 反向匹配, 查找不包含xxx的内容</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xxx</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 排除所有空行</span></span>
<span class="line"><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">^/pre&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;"># 返回结果 2,则说明第二行是空行</span></span>
<span class="line"><span style="color:#C3E88D;">grep -n &quot;^$&quot; 111.txt    </span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;"># 查询以abc开头的行</span></span>
<span class="line"><span style="color:#C3E88D;">grep -n “^abc” 111.txt </span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;"># 同时列出该词语出现在文章的第几行</span></span>
<span class="line"><span style="color:#C3E88D;">grep </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">xxx</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> -n xxx.log</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;"># 计算一下该字串出现的次数</span></span>
<span class="line"><span style="color:#C3E88D;">grep </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">xxx</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> -c xxx.log</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C3E88D;"># 比对的时候，不计较大小写的不同</span></span>
<span class="line"><span style="color:#C3E88D;">grep </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">xxx</span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;"> -i xxx.log</span></span></code></pre></div><h2 id="wc-数量统计" tabindex="-1">wc 数量统计 <a class="header-anchor" href="#wc-数量统计" aria-label="Permalink to &quot;wc 数量统计&quot;">​</a></h2><p>可以通过wc命令统计文件的行数、单词数量等</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wc</span><span style="color:#A6ACCD;"> [-c </span><span style="color:#C3E88D;">-m</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-w</span><span style="color:#A6ACCD;">] 文件路径</span></span></code></pre></div><ul><li>选项，-c，统计bytes数量</li><li>选项，-m，统计字符数量</li><li>选项，-l，统计行数</li><li>选项，-w，统计单词数量</li></ul><p>参数，文件路径，被统计的文件，可作为内容输入端口</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 查看文件里有多少行</span></span>
<span class="line"><span style="color:#FFCB6B;">wc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 看文件里有多少个word</span></span>
<span class="line"><span style="color:#FFCB6B;">wc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-w</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 文件里最长的那一行是多少个字</span></span>
<span class="line"><span style="color:#FFCB6B;">wc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">filename</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 统计字节数</span></span>
<span class="line"><span style="color:#FFCB6B;">wc</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061454947.png" alt="image-20221106145415827" style="zoom:80%;"><h2 id="管道符" tabindex="-1">管道符 <a class="header-anchor" href="#管道符" aria-label="Permalink to &quot;管道符&quot;">​</a></h2><p>学习了grep命令后，我们在来学习一个新的特殊符号，管道符：|</p><p>管道符的含义是：将管道符左边命令的结果，作为右边命令的输入</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061455843.png" alt="image-20221106145509744" style="zoom:80%;"><blockquote><p>cat itheima.txt的输出结果（文件内容），作为右边grep命令的输入（被过滤文件）</p></blockquote><p>管道符的应用非常多</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061456896.png" alt="image-20221106145613668" style="zoom:80%;"><h1 id="压缩和解压" tabindex="-1">压缩和解压 <a class="header-anchor" href="#压缩和解压" aria-label="Permalink to &quot;压缩和解压&quot;">​</a></h1><h2 id="压缩格式" tabindex="-1">压缩格式 <a class="header-anchor" href="#压缩格式" aria-label="Permalink to &quot;压缩格式&quot;">​</a></h2><p>市面上有非常多的压缩格式</p><ul><li>zip格式：Linux、Windows、MacOS，常用</li><li>7zip：Windows系统常用</li><li>rar：Windows系统常用</li><li>tar：Linux、MacOS常用</li><li>gzip：Linux、MacOS常用</li></ul><p>在Windows系统中常用的软件如：winrar、bandizip等软件，都支持各类常见的压缩格式，这里不多做讨论。</p><p>我们现在要学习，如何在Linux系统中操作：tar、gzip、zip这三种压缩格式完成文件的压缩、解压操作。</p><h2 id="gzip-gunzip" tabindex="-1">gzip/gunzip <a class="header-anchor" href="#gzip-gunzip" aria-label="Permalink to &quot;gzip/gunzip&quot;">​</a></h2><p>gzip/gunzip：压缩文件/解压</p><ul><li>gzip (文件)：压缩为.gz文件，原来文件不保留。</li><li>gunzip (文件)：解压缩，同样也不保留源文件。</li></ul><blockquote><p>（1）只能压缩文件不能压缩目录</p><p>（2）不保留原来的文件</p><p>（3）同时多个文件会产生多个压缩包</p></blockquote><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> gzip压缩</span></span>
<span class="line"><span style="color:#A6ACCD;">gzip houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> gunzip解压缩文件</span></span>
<span class="line"><span style="color:#A6ACCD;">gunzip houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">gz</span></span></code></pre></div><p>zip/unzip：压缩文件/解压</p><ul><li>zip [选项] (压缩后文件xxx.zip) (将要压缩的文件)</li><li>unzip [选项] (要解压的文件xxx.zip)</li><li>zip -r：递归压缩，即压缩目录</li><li>unzip -d (目录)：指定解压后的文件的存放目录</li></ul><h2 id="zip-unzip-压缩" tabindex="-1">zip/unzip 压缩 <a class="header-anchor" href="#zip-unzip-压缩" aria-label="Permalink to &quot;zip/unzip 压缩&quot;">​</a></h2><p>可以使用zip命令，压缩文件为zip压缩包</p><p>语法：-r，被压缩的包含文件夹的时候，需要使用-r选项，和rm、cp等命令的-r效果一致</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">zip </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">选项</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> XXX</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip 将要压缩的内容 </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">（功能描述：压缩文件和目录的命令）</span></span>
<span class="line"><span style="color:#A6ACCD;">unzip </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">选项</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> XXX</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">（功能描述：解压缩文件）</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252319906.png" alt="image-20220925231913796" style="zoom:80%;"><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 压缩 houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt和bailongma</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt，压缩后的名称为mypackage</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip</span></span>
<span class="line"><span style="color:#A6ACCD;">zip mypackage</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt bailongma</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 将test、itheima两个文件夹和a</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt文件，压缩到test</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip文件内</span></span>
<span class="line"><span style="color:#A6ACCD;">zip </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">r test</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip test itheima a</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt</span></span>
<span class="line"></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 解压 mypackage</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip</span></span>
<span class="line"><span style="color:#A6ACCD;">unzip mypackage</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 解压mypackage</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip到指定目录</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">d</span></span>
<span class="line"><span style="color:#A6ACCD;">unzip mypackage</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">d </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">opt</span></span>
<span class="line"><span style="color:#A6ACCD;">unzip test</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">d </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">home</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">itheima </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 将test</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">zip解压到指定文件夹内（</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">home</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">itheima）</span></span></code></pre></div><h2 id="tar-解压缩" tabindex="-1">tar 解压缩 <a class="header-anchor" href="#tar-解压缩" aria-label="Permalink to &quot;tar 解压缩&quot;">​</a></h2><h3 id="基本语法-1" tabindex="-1">基本语法 <a class="header-anchor" href="#基本语法-1" aria-label="Permalink to &quot;基本语法&quot;">​</a></h3><blockquote><p>tar命令位于/bin目录，它能够将用户所指定的文件或目录打包成一个文件，但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件，再以gzip压缩命令压缩成xxx.tar.gz(或称为xxx.tgz)的文件。</p></blockquote><p>.tar，称之为tarball，归档文件，即简单的将文件组装到一个.tar的文件内，并没有文件体积的减少，仅是简单的封装</p><p>.gz，也常见为.tar.gz，gzip格式压缩文件，即使用gzip压缩算法将文件压缩到一个文件内，可以极大的减少压缩后的体积</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 功能描述：打包目录，压缩后的 文件格式.tar.gz</span></span>
<span class="line"><span style="color:#FFCB6B;">tar</span><span style="color:#A6ACCD;"> [选项] xxx.tar.gz </span><span style="color:#89DDFF;">(</span><span style="color:#FFCB6B;">打包的内容</span><span style="color:#89DDFF;">)</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 作用: 对文件进行打包、解包、压缩、解压</span></span>
<span class="line"><span style="color:#FFCB6B;">tar</span><span style="color:#A6ACCD;">  [-zcxvf]  fileName  </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">files</span><span style="color:#89DDFF;">]</span></span></code></pre></div><blockquote><ul><li>包文件后缀为.tar表示只是完成了打包，<strong>并没有压缩</strong></li><li>包文件后缀为.tar.gz表示打包的同时<strong>还进行了压缩</strong></li></ul></blockquote><blockquote><ul><li>-z: z代表的是gzip，通过gzip命令处理文件，gzip可以对文件压缩或者解压</li><li>-c: c代表的是create，即创建新的包文件(打包)</li><li>-x: x代表的是extract，实现从包文件中还原文件(解包)</li><li>-v: v代表的是verbose，显示命令的执行过程</li><li>-f: f代表的是file，用于指定包文件的名称</li></ul></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252311947.png" alt="image-20220925231100844" style="zoom:80%;"><h3 id="压缩" tabindex="-1">压缩 <a class="header-anchor" href="#压缩" aria-label="Permalink to &quot;压缩&quot;">​</a></h3><blockquote><ul><li>-z选项如果使用的话，一般处于选项位第一个</li><li>-f选项，必须在选项位最后一个</li></ul></blockquote><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 压缩多个文件</span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">没有z，表示没有进行压缩</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#A6ACCD;">tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">cvf houma</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">gz houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt bailongma</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt bailongma</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 压缩目录：tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">zcvf </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">压缩后文件名</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">要压缩的文件所在位置</span><span style="color:#89DDFF;">)</span></span>
<span class="line"><span style="color:#A6ACCD;">tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">czvf xiyou</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">gz xiyou</span><span style="color:#89DDFF;">/</span></span></code></pre></div><h3 id="解压" tabindex="-1">解压 <a class="header-anchor" href="#解压" aria-label="Permalink to &quot;解压&quot;">​</a></h3><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 将hello</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar文件进行解包，并将解包后的文件放在当前目录</span></span>
<span class="line"><span style="color:#A6ACCD;">tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">xvf hello</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar		  			</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 解压：tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">zxvf </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">要解压的文件</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> 将hello</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">gz文件进行解压，并将解压后的文件放在当前目录</span></span>
<span class="line"><span style="color:#A6ACCD;">tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">xzvf houma</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">gz</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 解压到指定目录：tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">zxvf </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">要解压的文件</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">C </span><span style="color:#89DDFF;">(</span><span style="color:#A6ACCD;">指定目录</span><span style="color:#89DDFF;">)</span><span style="color:#A6ACCD;">，指定解压到的目录要存在</span></span>
<span class="line"><span style="color:#A6ACCD;">tar </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">xzvf xiyou</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">tar</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">gz </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">C </span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">opt</span></span></code></pre></div><blockquote><ul><li>-f选项，必须在选项组合体的最后一位</li><li>-z选项，建议在开头位置</li><li>-C选项单独使用，和解压所需的其它参数分开</li></ul></blockquote><h1 id="环境变量" tabindex="-1">环境变量 <a class="header-anchor" href="#环境变量" aria-label="Permalink to &quot;环境变量&quot;">​</a></h1><h2 id="环境变量的作用" tabindex="-1">环境变量的作用 <a class="header-anchor" href="#环境变量的作用" aria-label="Permalink to &quot;环境变量的作用&quot;">​</a></h2><p>在讲解which命令的时候，我们知道使用的一系列命令其实本质上就是一个个的可执行程序。比如，cd命令的本体就是：/usr/bin/cd 这个程序文件。我们是否会有疑问，为何无论当前工作目录在哪里，都能执行：/usr/bin/cd这个程序呢？这就是环境变量的作用啦。</p><p>环境变量是操作系统（Windows、Linux、Mac）在运行的时候，记录的一些关键性信息，用以辅助系统运行。</p><p>在Linux系统中执行：env命令即可查看当前系统中记录的环境变量</p><p>环境变量是一种KeyValue型结构，即名称和值，如下图：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211040846517.png" alt="image-20221104084637349" style="zoom:80%;"><p><strong>如图，图中记录了：</strong></p><ul><li><p><strong>HOME：/home/itheima</strong>，用户的<strong>HOME路径</strong></p></li><li><p><strong>USER：itheima</strong>，当前的操作用户</p></li><li><p><strong>PWD：当前工作路径</strong></p></li></ul><p><strong>等等一系列信息，用于辅助系统在运行的时候，从环境变量中获取关键信息</strong></p><h2 id="环境变量-path" tabindex="-1">环境变量：PATH <a class="header-anchor" href="#环境变量-path" aria-label="Permalink to &quot;环境变量：PATH&quot;">​</a></h2><p>在前面提出的问题中，我们说无论当前工作目录是什么，都能执行/usr/bin/cd这个程序，这个就是借助环境变量中：PATH这个项目的值来做到的。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211040844976.png" alt="image-20221104084439875" style="zoom:80%;"><p>PATH记录了系统执行任何命令的搜索路径，如上图记录了（路径之间以:隔开）：</p><ul><li>/usr/local/bin</li><li>/usr/bin</li><li>/usr/local/sbin</li><li>/usr/sbin</li><li>/home/itheima/.local/bin</li><li>/home/itheima/bin</li></ul><p>当执行任何命令，都会按照顺序，从上述路径中搜索要执行的程序的本体</p><p>比如执行cd命令，就从第二个目录/usr/bin中搜索到了cd命令，并执行</p><h2 id="读取环境变量" tabindex="-1">读取环境变量 <a class="header-anchor" href="#读取环境变量" aria-label="Permalink to &quot;读取环境变量&quot;">​</a></h2><p>在Linux系统中，$符号被用于取”变量”的值。环境变量记录的信息，除了给操作系统自己使用外，如果我们想要取用，也可以使用。取得环境变量的值就可以通过语法：$环境变量名 来取得。比如： echo $PATH</p><p>读取环境变量的方法：</p><ul><li><code>export</code>命令显示当前系统定义的所有环境变量</li><li><code>echo $PATH</code>命令输出当前的<code>PATH</code>环境变量的值，其中<code>PATH</code>变量定义了运行命令的查找路径，以冒号<code>:</code>分割不同的路径，使用<code>export</code>定义的时候可加双引号也可不加。</li></ul><p>就可以取得PATH这个环境变量的值，并通过echo语句输出出来。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211040843474.png" alt="image-20221104084331374" style="zoom:80%;"><p>又或者：echo ${PATH}ABC</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211040843918.png" alt="image-20221104084352826" style="zoom:80%;"><p>当和其它内容混合在一起的时候，可以通过{}来标注取的变量是谁</p><h2 id="自定义环境变量path" tabindex="-1">自定义环境变量PATH <a class="header-anchor" href="#自定义环境变量path" aria-label="Permalink to &quot;自定义环境变量PATH&quot;">​</a></h2><p>环境变量PATH这个项目里面记录了系统执行命令的搜索路径。这些搜索路径我们也可以自行添加到PATH中去。</p><ul><li>在当前HOME目录内创建文件夹，myenv，在文件夹内创建文件mkhaha</li><li>通过vim编辑器，在mkhaha文件内填入：echo 哈哈哈哈哈</li></ul><p>完成上述操作后，随意切换工作目录，执行mkhaha命令尝试一下，会发现无法执行</p><h3 id="临时修改" tabindex="-1">临时修改 <a class="header-anchor" href="#临时修改" aria-label="Permalink to &quot;临时修改&quot;">​</a></h3><p>临时修改PATH：export PATH=$PATH:/home/itheima/myenv，再次执行mkhaha，无论在哪里都能执行了</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/home/itheima/myenv</span></span></code></pre></div><blockquote><ul><li>生效时间：立即生效</li><li>生效期限：当前终端有效，窗口关闭后无效</li><li>生效范围：仅对当前用户有效</li><li>配置的环境变量中不要忘了加上原来的配置，即$PATH部分，避免覆盖原来配置</li></ul></blockquote><h3 id="仅对当前用户有效-bashrc" tabindex="-1">仅对当前用户有效 .bashrc <a class="header-anchor" href="#仅对当前用户有效-bashrc" aria-label="Permalink to &quot;仅对当前用户有效 .bashrc&quot;">​</a></h3><p>通过修改用户目录下的~/.bashrc文件进行配置：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.bashrc</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在最后一行加上</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/home/uusama/mysql/bin</span></span></code></pre></div><blockquote><ul><li>生效时间：使用相同的用户打开新的终端时生效，或者手动source ~/.bashrc生效</li><li>生效期限：永久有效</li><li>生效范围：仅对当前用户有效</li><li>如果有后续的环境变量加载文件覆盖了PATH定义，则可能不生效</li></ul></blockquote><h3 id="仅对当前用户有效-bash-profile" tabindex="-1">仅对当前用户有效 .bash_profile <a class="header-anchor" href="#仅对当前用户有效-bash-profile" aria-label="Permalink to &quot;仅对当前用户有效 .bash_profile&quot;">​</a></h3><p>和修改~/.bashrc文件类似，也是要在文件最后加上新的路径即可：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">~/.bash_profile</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在最后一行加上</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/home/uusama/mysql/bin</span></span></code></pre></div><blockquote><ul><li>生效时间：使用相同的用户打开新的终端时生效，或者手动source ~/.bash_profile生效</li><li>生效期限：永久有效</li><li>生效范围：仅对当前用户有效</li><li>如果没有~/.bash_profile文件，则可以编辑~/.profile文件或者新建一个</li></ul></blockquote><h3 id="对所有用户有效-etc-bashrc" tabindex="-1">对所有用户有效 /etc/bashrc <a class="header-anchor" href="#对所有用户有效-etc-bashrc" aria-label="Permalink to &quot;对所有用户有效 /etc/bashrc&quot;">​</a></h3><p>该方法是修改系统配置，需要管理员权限（如root）或者对该文件的写入权限：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 如果/etc/bashrc文件不可编辑，需要修改为可编辑</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u+w</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/bashrc</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/bashrc</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在最后一行加上</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/home/uusama/mysql/bin</span></span></code></pre></div><blockquote><ul><li>生效时间：新开终端生效，或者手动source /etc/bashrc生效</li><li>生效期限：永久有效</li><li>生效范围：对所有用户有效</li></ul></blockquote><h3 id="对所有用户生效-etc-profile⭐" tabindex="-1">对所有用户生效 /etc/profile⭐ <a class="header-anchor" href="#对所有用户生效-etc-profile⭐" aria-label="Permalink to &quot;对所有用户生效 /etc/profile⭐&quot;">​</a></h3><p>该方法修改系统配置，需要管理员权限或者对该文件的写入权限，和vim /etc/bashrc类似：</p><p>或将export PATH=$PATH:/home/itheima/myenv，填入用户环境变量文件或系统环境变量文件中去</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 如果/etc/profile文件不可编辑，需要修改为可编辑</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u+w</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># PATH：变量值，等于原有PATH再追加上程序目录，因为原有内容不能丢弃，这不是路径拼接，只是PATH新增成员</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># $PATH:写在前后位置都是可以的，用冒号分隔开</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/home/itheima/myenv</span></span>
<span class="line"><span style="color:#82AAFF;">source</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span></span></code></pre></div><blockquote><ul><li>生效时间：新开终端生效，或者手动source /etc/profile生效</li><li>生效期限：永久有效</li><li>生效范围：对所有用户有效</li></ul></blockquote><h3 id="对所有用户生效-etc-environment" tabindex="-1">对所有用户生效 /etc/environment <a class="header-anchor" href="#对所有用户生效-etc-environment" aria-label="Permalink to &quot;对所有用户生效 /etc/environment&quot;">​</a></h3><p>该方法是修改系统环境配置文件，需要管理员权限或者对该文件的写入权限：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 如果/etc/bashrc文件不可编辑，需要修改为可编辑</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u+w</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/environment</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/profile</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在最后一行加上</span></span>
<span class="line"><span style="color:#C792EA;">export</span><span style="color:#A6ACCD;"> PATH</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">$PATH</span><span style="color:#C3E88D;">:/home/uusama/mysql/bin</span></span></code></pre></div><blockquote><ul><li>生效时间：新开终端生效，或者手动source /etc/environment生效</li><li>生效期限：永久有效</li><li>生效范围：对所有用户有效</li></ul></blockquote><h2 id="环境变量的分类" tabindex="-1">环境变量的分类 <a class="header-anchor" href="#环境变量的分类" aria-label="Permalink to &quot;环境变量的分类&quot;">​</a></h2><p>环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。</p><ul><li>用户级别环境变量定义文件：~/.bashrc、~/.profile（部分系统为：~/.bash_profile）</li><li>系统级别环境变量定义文件：/etc/bashrc、/etc/profile(部分系统为：/etc/bash_profile）、/etc/environment</li></ul><blockquote><p>另外在用户环境变量中，系统会首先读取~/.bash_profile（或者~/.profile）文件，如果没有该文件则读取~/.bash_login，根据这些文件中内容再去读取~/.bashrc。</p></blockquote><h2 id="环境变量加载顺序" tabindex="-1">环境变量加载顺序 <a class="header-anchor" href="#环境变量加载顺序" aria-label="Permalink to &quot;环境变量加载顺序&quot;">​</a></h2><blockquote><ol><li>/etc/environment</li><li>/etc/profile</li><li>/etc/bash.bashrc</li><li>/etc/profile.d/test.sh</li><li>~/.profile</li><li>~/.bashrc</li></ol></blockquote><h1 id="用户和权限" tabindex="-1">用户和权限 <a class="header-anchor" href="#用户和权限" aria-label="Permalink to &quot;用户和权限&quot;">​</a></h1><blockquote><p>Linux系统是一种典型的多用户系统，不同的用户处于不同的地位，拥有不同的权限。 为了保护系统的安全性，Linux系统对不同的用户访问同一文件（包括目录文件）的权限做 了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属 的用户和组</p></blockquote><h2 id="root用户-超级管理员" tabindex="-1">root用户(超级管理员) <a class="header-anchor" href="#root用户-超级管理员" aria-label="Permalink to &quot;root用户(超级管理员)&quot;">​</a></h2><h3 id="_1-root介绍" tabindex="-1">1 root介绍 <a class="header-anchor" href="#_1-root介绍" aria-label="Permalink to &quot;1 root介绍&quot;">​</a></h3><p>无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。</p><ul><li>在Linux系统中，拥有最大权限的账户名为：root（超级管理员）</li><li>而在前期，我们一直使用的账户是普通的用户：itheima</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061525767.png" alt="image-20221106152513162" style="zoom:80%;"><p>root用户拥有最大的系统操作权限，而普通用户在许多地方的权限是受限的。</p><p>使用普通用户在根目录下创建文件夹</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061526545.png" alt="image-20221106152659063" style="zoom:80%;"><p>切换到root用户后，继续尝试</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061527819.png" alt="image-20221106152712617" style="zoom:80%;"><blockquote><p>普通用户的权限，一般在其HOME目录内是不受限的，一旦出了HOME目录，大多数地方，普通用户仅有只读和执行权限，无修改权限</p></blockquote><h3 id="_2-su-切换用户-和exit命令" tabindex="-1">2 su(切换用户)和exit命令 <a class="header-anchor" href="#_2-su-切换用户-和exit命令" aria-label="Permalink to &quot;2 su(切换用户)和exit命令&quot;">​</a></h3><p>在前面，我们接触过su命令切换到root账户。su命令就是用于账户切换的系统命令，其来源英文单词：Switch User</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">su</span><span style="color:#A6ACCD;"> [-] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">用户名</span><span style="color:#89DDFF;">]</span></span></code></pre></div><blockquote><ul><li>-符号是可选的，表示是否在切换用户后加载环境变量（后续讲解），建议带上</li><li>参数：用户名，表示要切换的用户，用户名也可以省略，省略表示切换到root</li></ul></blockquote><p>切换用户后，可以通过exit命令退回上一个用户，也可以使用快捷键：ctrl + d</p><blockquote><ul><li>使用普通用户，切换到其它用户需要输入密码，如切换到root用户</li><li>使用root用户切换到其它用户，无需密码，可以直接切换</li></ul></blockquote><h3 id="_3-sudo-命令" tabindex="-1">3 sudo 命令 <a class="header-anchor" href="#_3-sudo-命令" aria-label="Permalink to &quot;3 sudo 命令&quot;">​</a></h3><p>在得知root密码时，可以通过su命令切换到root得到最大权限。不建议长期使用root用户，避免带来系统损坏。</p><p>我们可以使用sudo命令，为普通的命令授权，临时以root身份执行。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">sudo</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">其他命令</span></span></code></pre></div><blockquote><p>在其它命令之前，带上sudo，即可为这一条命令临时赋予root授权</p><p>但是并不是所有的用户，都有权利使用sudo，我们需要为普通用户配置sudo认证</p></blockquote><h3 id="_4-为普通用户配置sudo认证" tabindex="-1">4 为普通用户配置sudo认证 <a class="header-anchor" href="#_4-为普通用户配置sudo认证" aria-label="Permalink to &quot;4 为普通用户配置sudo认证&quot;">​</a></h3><p>切换到root用户，执行visudo命令，会自动通过vi编辑器打开：/etc/sudoers，在文件的最后添加：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/sudoers</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">或者</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">visudo</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 打开文件</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">test</span><span style="color:#A6ACCD;">    </span><span style="color:#C3E88D;">ALL=</span><span style="color:#A6ACCD;">(</span><span style="color:#C3E88D;">ALL</span><span style="color:#A6ACCD;">)       ALL</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061637659.png" alt="image-20221106163724548" style="zoom:80%;"><p>和上面root用户一样，test为用户名，下面讲了如何创建用户名:useradd test，然后wq保存即可</p><p>切换回普通用户，执行的命令，均以root运行</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">su</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test</span></span></code></pre></div><p>创建文件夹测试(刚创建的用户一般是没有权限创建文件夹的)，成功</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061640429.png" alt="image-20221106164021315" style="zoom:80%;"><h2 id="用户、用户组管理" tabindex="-1">用户、用户组管理 <a class="header-anchor" href="#用户、用户组管理" aria-label="Permalink to &quot;用户、用户组管理&quot;">​</a></h2><h3 id="_1-用户、用户组介绍" tabindex="-1">1 用户、用户组介绍 <a class="header-anchor" href="#_1-用户、用户组介绍" aria-label="Permalink to &quot;1 用户、用户组介绍&quot;">​</a></h3><blockquote><p>Linux系统中可以：配置多个用户、配置多个用户组、用户可以加入多个用户组中</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061536337.png" alt="image-20221106153650785" style="zoom:80%;"><p>Linux中关于权限的管控级别有2个级别，分别是：</p><blockquote><p>针对用户的权限控制、针对用户组的权限控制，比如，针对某文件，可以控制用户的权限和用户组的权限</p><p>对于该文件，可以设置该组可读可写，设置该用户可读可写可执行，不冲突，组内成员默认拥有组内权限</p></blockquote><h3 id="_2-用户组管理" tabindex="-1">2 用户组管理 <a class="header-anchor" href="#_2-用户组管理" aria-label="Permalink to &quot;2 用户组管理&quot;">​</a></h3><p>以下命令需root用户执行</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">groupadd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">用户组名</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 创建用户组</span></span>
<span class="line"><span style="color:#FFCB6B;">groupdel</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">用户组名</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 删除用户组</span></span>
<span class="line"><span style="color:#FFCB6B;">groupadd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast</span><span style="color:#A6ACCD;">  </span><span style="color:#676E95;font-style:italic;"># 为后续演示，我们创建一个itcast用户组：</span></span></code></pre></div><h3 id="_3-用户管理" tabindex="-1">3 用户管理 <a class="header-anchor" href="#_3-用户管理" aria-label="Permalink to &quot;3 用户管理&quot;">​</a></h3><p>以下命令需root用户执行</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">useradd</span><span style="color:#A6ACCD;"> [-g </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;">] 用户名 </span><span style="color:#676E95;font-style:italic;"># 创建用户</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">useradd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 创建test用户，并自动创建test组</span></span>
<span class="line"><span style="color:#FFCB6B;">useradd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test2</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/home/test22</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 创建test2用户，加入itcast组，指定home目录为/home/test22</span></span></code></pre></div><p>选项：-g指定用户的组，不指定-g，会创建同名组并自动加入，指定-g需要组已经存在，如已存在同名组，必须使用-g</p><p>选项：-d指定用户HOME路径，不指定，HOME目录默认在：/home/用户名</p><p>给用户设置密码</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">passwd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test</span></span></code></pre></div><p>删除用户</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">userdel</span><span style="color:#A6ACCD;"> [-r] 用户名 </span><span style="color:#676E95;font-style:italic;"># 删除用户</span></span>
<span class="line"><span style="color:#FFCB6B;">userdel</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test</span></span>
<span class="line"><span style="color:#FFCB6B;">userdel</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test</span></span></code></pre></div><p>选项：-r，删除用户的HOME目录，不使用-r，删除用户时，HOME目录保留</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">id</span><span style="color:#A6ACCD;"> [用户名] </span><span style="color:#676E95;font-style:italic;"># 查看用户所属组</span></span></code></pre></div><p>参数：用户名，被查看的用户，如果不提供则查看自身</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">usermod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-aG</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">用户组</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">用户名</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 将指定用户加入指定用户组 修改用户所属组</span></span>
<span class="line"><span style="color:#FFCB6B;">usermod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-aG</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">itcast</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 将test用户加入到itcast组中</span></span></code></pre></div><h3 id="_4-getent" tabindex="-1">4 getent <a class="header-anchor" href="#_4-getent" aria-label="Permalink to &quot;4 getent&quot;">​</a></h3><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">getent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">passwd</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 使用getent命令，可以查看当前系统中有哪些用户</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061540731.png" alt="image-20221106154032347" style="zoom:80%;"><p>共有7份信息，分别是：用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">getent</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">group</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 使用getent命令，同样可以查看当前系统中有哪些用户组</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061541002.png" alt="image-20221106154142765" style="zoom:80%;"><p>包含3份信息，组名称:组认证(显示为x):组ID</p><h2 id="查看权限控制" tabindex="-1">查看权限控制 <a class="header-anchor" href="#查看权限控制" aria-label="Permalink to &quot;查看权限控制&quot;">​</a></h2><h3 id="_1-认知权限信息" tabindex="-1">1 认知权限信息 <a class="header-anchor" href="#_1-认知权限信息" aria-label="Permalink to &quot;1 认知权限信息&quot;">​</a></h3><blockquote><p>通过ls -l 可以以列表形式查看内容，并显示权限细节</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061542834.png" alt="image-20221106154247506" style="zoom:80%;"><ul><li>序号1，表示文件、文件夹的权限控制信息</li><li>序号2，表示文件、文件夹所属用户</li><li>序号3，表示文件、文件夹所属用户组</li></ul><p>让我们来解析一下序号1，权限细节,权限细节总共分为10个槽位</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061546456.png" alt="image-20221106154633976" style="zoom:80%;"><p>举例：drwxr-xr-x，表示：</p><p>•这是一个文件夹，首字母d表示</p><p>•所属用户(右上角图序号2)的权限是：有r有w有x，rwx</p><p>•所属用户组(右上角图序号3)的权限是：有r无w有x，r-x （-表示无此权限）</p><p>•其它用户的权限是：有r无w有x，r-x</p><h3 id="_2-rwx" tabindex="-1">2 rwx <a class="header-anchor" href="#_2-rwx" aria-label="Permalink to &quot;2 rwx&quot;">​</a></h3><p>那么，rwx到底代表什么呢？</p><blockquote><p>r表示读权限、w表示写权限、x表示执行权限</p></blockquote><p>针对文件、文件夹的不同，rwx的含义有细微差别</p><blockquote><p>r，针对文件可以查看文件内容，针对文件夹，可以查看文件夹内容，如ls命令</p><p>w，针对文件表示可以修改此文件，针对文件夹，可以在文件夹内：创建、删除、改名等操作</p><p>x，针对文件表示可以将文件作为程序执行，针对文件夹，表示可以更改工作目录到此文件夹，即cd进入</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061603556.png" alt="image-20221106160349231" style="zoom:80%;"><h2 id="修改权限控制-chmod" tabindex="-1">修改权限控制 - chmod <a class="header-anchor" href="#修改权限控制-chmod" aria-label="Permalink to &quot;修改权限控制 - chmod&quot;">​</a></h2><div class="language-s和"><button title="Copy Code" class="copy"></button><span class="lang">s和</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">chmod [-R] 权限 文件或文件夹</span></span></code></pre></div><p>选项：-R，对文件夹内的全部内容应用同样的操作</p><h3 id="_1-通过字母" tabindex="-1">1 通过字母 <a class="header-anchor" href="#_1-通过字母" aria-label="Permalink to &quot;1 通过字母&quot;">​</a></h3><ul><li>u：所有者；g：所在组；o：其他人；a：所有人（u、g、o的总和）</li><li>chmod u=rwx，g=rx，o=x 文件目录名：分别权限</li><li>chmod o+w 文件目录名：给其他人都增加写的权限</li><li>chmod a-x 文件目录名：给所有的用户都减掉执行权限</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 第一种方式变更权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> [{</span><span style="color:#FFCB6B;">ugoa}</span><span style="color:#A6ACCD;">{+-=}{rwx}</span><span style="color:#FFCB6B;">]</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">文件或目录</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 第二种方式变更权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> [mode=421 </span><span style="color:#C3E88D;">]</span><span style="color:#A6ACCD;"> [文件或目录]</span></span></code></pre></div><p>案例演示</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 给abc文件的所有者读写执行权限，给所在组读执行权限，给其他组读执行权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u=rwx,g=rx,o=rx</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">abc.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 给abc文件夹的所有者除去执行的权限，增加写的权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u-x,g+w</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">abc</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 给abc文件的所有用户增加读的权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">a+r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">abc</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 修改文件使其所属组用户具有执行权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">g+x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span></span></code></pre></div><h3 id="_2-通过数字⭐" tabindex="-1">2 通过数字⭐ <a class="header-anchor" href="#_2-通过数字⭐" aria-label="Permalink to &quot;2 通过数字⭐&quot;">​</a></h3><p>权限可以用3位数字来代表，第一位数字表示用户权限，第二位表示用户组权限，第三位表示其它用户权限。</p><p>数字的细节如下：r记为4，w记为2，x记为1，可以有：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">chmod u=rwx，g=rx，o=x 文件目录名 等价于 chmod 751 文件目录名</span></span></code></pre></div><ul><li>上述规则可以自由组合：rwx=4+2+1=7、rw=6、rx=5</li><li>0：无任何权限， 即 ---</li><li>1：仅有x权限， 即 --x</li><li>2：仅有w权限 即 -w-</li><li>3：有w和x权限 即 -wx</li><li>4：仅有r权限 即 r--</li><li>5：有r和x权限 即 r-x</li><li>6：有r和w权限 即 rw-</li><li>7：有全部权限 即 rwx</li></ul><p>所以751表示： rwx(7) r-x(5) --x(1)</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 采用数字的方式，设置文件所有者、所属组、其他用户都具有可读可写可执行权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">777</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">houge.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">777</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">xiyou/</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 将hello.txt的权限修改为： r-x--xr-x，数字序号为：</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">515</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 将hello.txt的权限修改为： -wx-w-rw-，数字序号为：</span></span>
<span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">326</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 序号123代表的权限是：--x-w--wx</span></span></code></pre></div><p>我们可以得知，Owner 的权限为 7，为可读可写可执行，Group 的权限为 5，为可读可执行，Others 的权限为 0，表示不可读写不可执行。对应字母为：<code>rwxr-x---</code>。</p><h3 id="_3-通过符号" tabindex="-1">3 通过符号 <a class="header-anchor" href="#_3-通过符号" aria-label="Permalink to &quot;3 通过符号&quot;">​</a></h3><p>除了这种数字的方式，还有一种使用符号类型改变权限的方式：</p><p>在这种方式里，我们将三种身份 <code>Owner</code>、<code>Group</code>、<code>Others</code>，分别简写为 <code>u（User）</code>、<code>g</code>、<code>o</code>，用 <code>a</code> 表示所有身份，再使用 <code>+</code> <code>-</code> <code>=</code> 表示加入、去除、设定一个权限，<code>r</code> <code>w</code> <code>x</code> 则继续表示读，写，执行权限，举个例子：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chomd</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u+x,g-x,o-x</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span></code></pre></div><p>意思就是 <code>Owner</code> 加上执行权限，<code>Group</code> 和 <code>Others</code> 去除执行权限。</p><p>当然我们也可以直接设定权限</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chmod</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">u=rwx,g=rx,o=r</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">index.html</span></span></code></pre></div><p>此时文件的权限就相当于 <code>-rwxr-xr--</code>。</p><p>此外，我们还可以省略不写 <code>ugoa</code> 这类身份内容，直接写：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">chmod +x index.html</span></span></code></pre></div><p>此时相当于使用了 <code>a</code>，会给所有身份添加执行权限。</p><h2 id="修改权限控制-chown" tabindex="-1">修改权限控制 - chown <a class="header-anchor" href="#修改权限控制-chown" aria-label="Permalink to &quot;修改权限控制 - chown&quot;">​</a></h2><h3 id="_1-chown命令" tabindex="-1">1 chown命令 <a class="header-anchor" href="#_1-chown命令" aria-label="Permalink to &quot;1 chown命令&quot;">​</a></h3><p>使用chown命令，可以修改文件、文件夹的所属用户和用户组</p><p>普通用户无法修改所属为其它用户或组，所以此命令只适用于root用户执行</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211061545933.png" alt="image-20221106154529516" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chown</span><span style="color:#A6ACCD;"> [-R] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">用户</span><span style="color:#89DDFF;">][</span><span style="color:#A6ACCD;">:</span><span style="color:#89DDFF;">][</span><span style="color:#A6ACCD;">用户组</span><span style="color:#89DDFF;">]</span></span></code></pre></div><p>选项，-R，同chmod，对文件夹内全部内容应用相同规则</p><blockquote><p>•选项，用户，修改所属用户</p><p>•选项，用户组，修改所属用户组</p><p>•:用于分隔用户和用户组</p></blockquote><h3 id="_2-案例演示" tabindex="-1">2 案例演示 <a class="header-anchor" href="#_2-案例演示" aria-label="Permalink to &quot;2 案例演示&quot;">​</a></h3><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">root</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt，将hello.txt所属用户修改为root</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">:root</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt，将hello.txt所属用户组修改为root</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">root:itheima</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hello.txt，将hello.txt所属用户修改为root，用户组修改为itheima</span></span>
<span class="line"></span>
<span class="line"><span style="color:#FFCB6B;">chown</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-R</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">root</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">test，将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则</span></span></code></pre></div><p>chown修改文件所有者</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">chown</span><span style="color:#A6ACCD;"> [选项] </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">最终用户</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">文件或目录</span><span style="color:#89DDFF;">]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 功能描述：改变文件或者目录的所有者</span></span></code></pre></div><p>-R：如果是目录，则使其下所有子文件或目录递归生效</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">chown atguigu houge</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">txt</span></span>
<span class="line"><span style="color:#A6ACCD;">chown </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">R atguigu:atguigu xiyou</span><span style="color:#89DDFF;">/</span></span></code></pre></div><h1 id="磁盘管理" tabindex="-1">磁盘管理 <a class="header-anchor" href="#磁盘管理" aria-label="Permalink to &quot;磁盘管理&quot;">​</a></h1><h2 id="df-显示磁盘空间使用情况" tabindex="-1">df 显示磁盘空间使用情况 <a class="header-anchor" href="#df-显示磁盘空间使用情况" aria-label="Permalink to &quot;df 显示磁盘空间使用情况&quot;">​</a></h2><blockquote><p>df命令的英文全称即“Disk Free”，顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB，建议使用“df -h”的参数组合，根据磁盘容量自动变换合适的单位，更利于阅读。日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。语法格式：df [参数] [指定文件]</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">显示所有系统文件</td></tr><tr><td style="text-align:left;">-B</td><td style="text-align:left;">&lt;块大小&gt; 指定显示时的块大小</td></tr><tr><td style="text-align:left;">-h</td><td style="text-align:left;">以容易阅读的方式显示</td></tr><tr><td style="text-align:left;">-H</td><td style="text-align:left;">以1000字节为换算单位来显示</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">显示索引字节信息</td></tr><tr><td style="text-align:left;">-k</td><td style="text-align:left;">指定块大小为1KB</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">只显示本地文件系统</td></tr><tr><td style="text-align:left;">-t</td><td style="text-align:left;">&lt;文件系统类型&gt; 只显示指定类型的文件系统</td></tr><tr><td style="text-align:left;">-T</td><td style="text-align:left;">输出时显示文件系统类型</td></tr><tr><td style="text-align:left;">-- -sync</td><td style="text-align:left;">在取得磁盘使用信息前，先执行sync命令</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 显示磁盘分区使用情况：</span></span>
<span class="line"><span style="color:#FFCB6B;">df</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 以容易阅读的方式显示磁盘分区使用情况：</span></span>
<span class="line"><span style="color:#FFCB6B;">df</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示指定文件所在分区的磁盘使用情况：</span></span>
<span class="line"><span style="color:#FFCB6B;">df</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/dhcp</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示文件类型为ext4的磁盘使用情况：</span></span>
<span class="line"><span style="color:#FFCB6B;">df</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ext4</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 查看磁盘挂载情况</span></span>
<span class="line"><span style="color:#FFCB6B;">mount</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看磁盘分区信息</span></span>
<span class="line"><span style="color:#FFCB6B;">df</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看目录及子目录大小</span></span>
<span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-H</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span></span>
<span class="line"></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看当前目录下各个文件, 文件夹占了多少空间, 不会递归</span></span>
<span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sh</span><span style="color:#A6ACCD;"> </span><span style="color:#A6ACCD;">*</span></span></code></pre></div><h2 id="fdisk-磁盘分区" tabindex="-1">fdisk 磁盘分区 <a class="header-anchor" href="#fdisk-磁盘分区" aria-label="Permalink to &quot;fdisk 磁盘分区&quot;">​</a></h2><blockquote><p>fdisk命令的英文全称是“Partition table manipulator for Linux”，即作为磁盘的分区工具。进行硬盘分区从实质上说就是对硬盘的一种格式化，分区就好比在一张白纸上画一个大方框，而格式化好比在方框里打上格子。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-b</td><td style="text-align:left;">指定每个分区的大小</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">列出指定的外围设备的分区表状况</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">将指定的分区大小输出到标准输出上，单位为区块</td></tr><tr><td style="text-align:left;">-u</td><td style="text-align:left;">搭配”-l”参数列表，会用分区数目取代柱面数目，来表示每个分区的起始地址</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">显示版本信息</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 语法格式：fdisk [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看所有分区情况</span></span>
<span class="line"><span style="color:#FFCB6B;">fdisk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-l</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 选择分区磁盘</span></span>
<span class="line"><span style="color:#FFCB6B;">fdisk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sdb</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 在当前磁盘上建立扩展分区</span></span>
<span class="line"><span style="color:#FFCB6B;">fdisk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/ext</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 不检查磁盘表面加快分区操作</span></span>
<span class="line"><span style="color:#FFCB6B;">fdisk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/actok</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 重建主引导记录</span></span>
<span class="line"><span style="color:#FFCB6B;">fdisk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/cmbr</span></span></code></pre></div><h2 id="lsblk-查看系统的磁盘" tabindex="-1">lsblk 查看系统的磁盘 <a class="header-anchor" href="#lsblk-查看系统的磁盘" aria-label="Permalink to &quot;lsblk 查看系统的磁盘&quot;">​</a></h2><blockquote><p>lsblk命令的英文是“list block”，即用于列出所有可用块设备的信息，而且还能显示他们之间的依赖关系，但是它不会列出RAM盘的信息。lsblk命令包含在util-linux-ng包中，现在该包改名为util-linux。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">显示所有设备</td></tr><tr><td style="text-align:left;">-b</td><td style="text-align:left;">以bytes方式显示设备大小</td></tr><tr><td style="text-align:left;">-d</td><td style="text-align:left;">不显示 slaves 或 holders</td></tr><tr><td style="text-align:left;">-D</td><td style="text-align:left;">print discard capabilities</td></tr><tr><td style="text-align:left;">-e</td><td style="text-align:left;">排除设备</td></tr><tr><td style="text-align:left;">-f</td><td style="text-align:left;">显示文件系统信息</td></tr><tr><td style="text-align:left;">-h</td><td style="text-align:left;">显示帮助信息</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">use ascii characters only</td></tr><tr><td style="text-align:left;">-m</td><td style="text-align:left;">显示权限信息</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">使用列表格式显示</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">不显示标题</td></tr><tr><td style="text-align:left;">-o</td><td style="text-align:left;">输出列</td></tr><tr><td style="text-align:left;">-P</td><td style="text-align:left;">使用key=”value”格式显示</td></tr><tr><td style="text-align:left;">-r</td><td style="text-align:left;">使用原始格式显示</td></tr><tr><td style="text-align:left;">-t</td><td style="text-align:left;">显示拓扑结构信息</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 语法格式：lsblk [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># lsblk命令默认情况下将以树状列出所有块设备</span></span>
<span class="line"><span style="color:#FFCB6B;">lsblk</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 默认选项不会列出所有空设备</span></span>
<span class="line"><span style="color:#FFCB6B;">lsblk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 也可以用于列出一个特定设备的拥有关系，同时也可以列出组和模式</span></span>
<span class="line"><span style="color:#FFCB6B;">lsblk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-m</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 要获取SCSI设备的列表，你只能使用-S选项，该选项是用来以颠倒的顺序打印依赖的：</span></span>
<span class="line"><span style="color:#FFCB6B;">lsblk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-S</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 例如，你也许想要以列表格式列出设备，而不是默认的树状格式。可以将两个不同的选项组合，以获得期望的输出</span></span>
<span class="line"><span style="color:#FFCB6B;">lsblk</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-nl</span></span></code></pre></div><h2 id="hdparm-显示与设定硬盘参数" tabindex="-1">hdparm 显示与设定硬盘参数 <a class="header-anchor" href="#hdparm-显示与设定硬盘参数" aria-label="Permalink to &quot;hdparm 显示与设定硬盘参数&quot;">​</a></h2><p>hdparm命令用于检测，显示与设定IDE或SCSI硬盘的参数。</p><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">设定读取文件时，预先存入块区的分区数</td></tr><tr><td style="text-align:left;">-f</td><td style="text-align:left;">将内存缓冲区的数据写入硬盘，并清空缓冲区</td></tr><tr><td style="text-align:left;">-g</td><td style="text-align:left;">显示硬盘的磁轨，磁头，磁区等参数</td></tr><tr><td style="text-align:left;">-I</td><td style="text-align:left;">直接读取硬盘所提供的硬件规格信息</td></tr><tr><td style="text-align:left;">-X</td><td style="text-align:left;">设定硬盘的传输模式</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 语法格式：hdparm [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示硬盘的相关设置</span></span>
<span class="line"><span style="color:#FFCB6B;">hdparm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示硬盘的柱面、磁头、扇区数</span></span>
<span class="line"><span style="color:#FFCB6B;">hdparm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 评估硬盘的读取效率</span></span>
<span class="line"><span style="color:#FFCB6B;">hdparm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 直接读取硬盘所提供的硬件规格信息：</span></span>
<span class="line"><span style="color:#FFCB6B;">hdparm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-X</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 使IDE硬盘进入睡眠模式</span></span>
<span class="line"><span style="color:#FFCB6B;">hdparm</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-Y</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda</span></span></code></pre></div><h2 id="vgextend-扩展卷组" tabindex="-1">vgextend 扩展卷组 <a class="header-anchor" href="#vgextend-扩展卷组" aria-label="Permalink to &quot;vgextend 扩展卷组&quot;">​</a></h2><blockquote><p>vgextend命令用于动态扩展LVM卷组，它通过向卷组中添加物理卷来增加卷组的容量。LVM卷组中的物理卷可以在使用vgcreate命令创建卷组时添加，也可以使用vgextend命令动态的添加。语法格式：vgextend [参数]</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-d</td><td style="text-align:left;">调试模式</td></tr><tr><td style="text-align:left;">-t</td><td style="text-align:left;">仅测试</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 将物理卷/dev/sdb1加入卷组vglinuxprobe:</span></span>
<span class="line"><span style="color:#FFCB6B;">vgextend</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">vglinuxprobe</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sdb1</span></span></code></pre></div><h2 id="du-磁盘使用情况查询" tabindex="-1">du 磁盘使用情况查询 <a class="header-anchor" href="#du-磁盘使用情况查询" aria-label="Permalink to &quot;du 磁盘使用情况查询&quot;">​</a></h2><h3 id="指定目录的磁盘" tabindex="-1">指定目录的磁盘 <a class="header-anchor" href="#指定目录的磁盘" aria-label="Permalink to &quot;指定目录的磁盘&quot;">​</a></h3><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--max-depth=1，默认为当前目录</span></span></code></pre></div><ul><li>-s：指定目录占用大小汇总</li><li>-h：带计量单位</li><li>-a：含文件</li><li>--max-depth=1：子目录深度</li><li>-c：列出明细的同时，增加汇总值</li></ul><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-h</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--max-depth=1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root</span></span>
<span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ha</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">--max-depth=1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root</span></span></code></pre></div><h3 id="找到目录下大文件" tabindex="-1">找到目录下大文件 <a class="header-anchor" href="#找到目录下大文件" aria-label="Permalink to &quot;找到目录下大文件&quot;">​</a></h3><p>列出当前目录或文件的总大小，并按倒序排序</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;">  </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sort</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-nr</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202210241927576.png" alt="image-20221024192726491" style="zoom:80%;"><p>找到最大的目录 <code>software</code>，占用 773M。进入到这个目录中，然后再次执行 du 命令。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">du</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-sh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/root/software/</span><span style="color:#A6ACCD;">*</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">sort</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-nr</span></span></code></pre></div><h1 id="设备管理" tabindex="-1">设备管理 <a class="header-anchor" href="#设备管理" aria-label="Permalink to &quot;设备管理&quot;">​</a></h1><h2 id="mount-文件系统挂载" tabindex="-1">mount 文件系统挂载 <a class="header-anchor" href="#mount-文件系统挂载" aria-label="Permalink to &quot;mount 文件系统挂载&quot;">​</a></h2><blockquote><p>mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom，使我们可以访问cdrom中的数据，因为你将光盘插入cdrom中，Linux并不会自动挂载，必须使用Linux mount命令来手动完成挂载。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-t</td><td style="text-align:left;">指定挂载类型</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">显示已加载的文件系统列表</td></tr><tr><td style="text-align:left;">-h</td><td style="text-align:left;">显示帮助信息并退出</td></tr><tr><td style="text-align:left;">-V</td><td style="text-align:left;">显示程序版本</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">加载没有写入文件“/etc/mtab”中的文件系统</td></tr><tr><td style="text-align:left;">-r</td><td style="text-align:left;">将文件系统加载为只读模式</td></tr><tr><td style="text-align:left;">-a</td><td style="text-align:left;">加载文件“/etc/fstab”中描述的所有文件系统</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># mount [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看版本</span></span>
<span class="line"><span style="color:#FFCB6B;">mount</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-V</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 启动所有挂载</span></span>
<span class="line"><span style="color:#FFCB6B;">mount</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 挂载 /dev/cdrom 到 /mnt</span></span>
<span class="line"><span style="color:#FFCB6B;">mount</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/cdrom</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/mnt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 挂载nfs格式文件系统</span></span>
<span class="line"><span style="color:#FFCB6B;">mount</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">nfs</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/123</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/mnt</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 挂载第一块盘的第一个分区到/etc目录</span></span>
<span class="line"><span style="color:#FFCB6B;">mount</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ext4</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-o</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">loop,default</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc</span></span></code></pre></div><h2 id="makedev-建立设备" tabindex="-1">MAKEDEV 建立设备 <a class="header-anchor" href="#makedev-建立设备" aria-label="Permalink to &quot;MAKEDEV  建立设备&quot;">​</a></h2><p>MAKEDEV是一个脚本程序, 用于在 /dev 目录下建立设备, 通过这些设备文件可以 访问位于内核的驱动程序。</p><p>MAKEDEV 脚本创建静态的设备节点，通常位于/dev目录下。</p><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-v</td><td style="text-align:left;">显示出执行的每一个动作</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">并不做真正的更新, 只是显示一下它的执行效果</td></tr><tr><td style="text-align:left;">-d</td><td style="text-align:left;">删除设备文件</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># MAKEDEV [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示出执行的每一个动作</span></span>
<span class="line"><span style="color:#FFCB6B;">./MAKEDEV</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-v</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">update</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 删除设备</span></span>
<span class="line"><span style="color:#FFCB6B;">./MAKEDEV</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">device</span></span></code></pre></div><h2 id="lspci-显示当前设备所有pci总线信息" tabindex="-1">lspci 显示当前设备所有PCI总线信息 <a class="header-anchor" href="#lspci-显示当前设备所有pci总线信息" aria-label="Permalink to &quot;lspci 显示当前设备所有PCI总线信息&quot;">​</a></h2><blockquote><p>lspci命令用于显示当前主机的所有PCI总线信息，以及所有已连接的PCI设备信息。现在主流设备如网卡储存等都采用PCI总线</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-n</td><td style="text-align:left;">以数字方式显示PCI厂商和设备代码</td></tr><tr><td style="text-align:left;">-t</td><td style="text-align:left;">以树状结构显示PCI设备的层次关系</td></tr><tr><td style="text-align:left;">-b</td><td style="text-align:left;">以总线为中心的视图</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">仅显示指定总线插槽的设备和功能块信息</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">指定PCI编号列表文件，不使用默认文件</td></tr><tr><td style="text-align:left;">-m</td><td style="text-align:left;">以机器可读方式显示PCI设备信息</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># lspci [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示当前主机的所有PCI总线信息：</span></span>
<span class="line"><span style="color:#FFCB6B;">lspci</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 以树状结构显示PCI设备的层次关系：</span></span>
<span class="line"><span style="color:#FFCB6B;">lspci</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-t</span></span></code></pre></div><h2 id="setleds-设定键盘上方三个-led-的状态" tabindex="-1">setleds 设定键盘上方三个 LED 的状态 <a class="header-anchor" href="#setleds-设定键盘上方三个-led-的状态" aria-label="Permalink to &quot;setleds 设定键盘上方三个 LED 的状态&quot;">​</a></h2><blockquote><p>setleds即是英文词组“set leds”的合并，翻译为中文就是设置LED灯。setleds命令用来设定键盘上方三个 LED 灯的状态。在 Linux 中，每一个虚拟主控台都有独立的设定。这是一个十分神奇的命令，竟然可以通过命令来控制键盘的灯的状态。那么下面我一起来学习一下这个命令吧。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-F</td><td style="text-align:left;">设定虚拟主控台的状态</td></tr><tr><td style="text-align:left;">-D</td><td style="text-align:left;">改变虚拟主控台的状态和预设的状态</td></tr><tr><td style="text-align:left;">-L</td><td style="text-align:left;">直接改变 LED 显示的状态</td></tr><tr><td style="text-align:left;">+num/-num</td><td style="text-align:left;">将数字键打开或关闭</td></tr><tr><td style="text-align:left;">+caps/-caps</td><td style="text-align:left;">把大小写键打开或关闭</td></tr><tr><td style="text-align:left;">+scroll /-scroll</td><td style="text-align:left;">把选项键打开或关闭</td></tr></tbody></table><p><strong>参考实例：</strong></p><p>控制键盘灯num灯亮和灯灭：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">setleds +num </span></span>
<span class="line"><span style="color:#A6ACCD;">setleds -num</span></span></code></pre></div><p>控制键盘的大小写键打开或关闭，键盘指示灯亮与灭：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">setleds +caps </span></span>
<span class="line"><span style="color:#A6ACCD;">setleds -caps</span></span></code></pre></div><p>控制键盘的选项键打开或关闭，键盘指示灯亮与灭：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">setleds +scroll</span></span></code></pre></div><p>对三灯的亮与灭的情况进行组合，分别设置为数字灯亮，大小写灯灭，选项键scroll灯灭：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">setleds +num -caps -scroll</span></span></code></pre></div><h2 id="sensors-检测服务器内部温度及电压" tabindex="-1">sensors 检测服务器内部温度及电压 <a class="header-anchor" href="#sensors-检测服务器内部温度及电压" aria-label="Permalink to &quot;sensors 检测服务器内部温度及电压&quot;">​</a></h2><p>sensors命令用于检测服务器内部降温系统是否健康，可以监控主板，CPU的工作电压，风扇转速、温度等数据 。</p><p>检测cpu工作电压，温度等：</p><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">sensors</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304181725318.png" alt="image-20230418172546000" style="zoom:80%;"><h2 id="uname-显示系统信息" tabindex="-1">uname 显示系统信息 <a class="header-anchor" href="#uname-显示系统信息" aria-label="Permalink to &quot;uname 显示系统信息&quot;">​</a></h2><p>uname命令的英文全称即“Unix name”。</p><p>用于显示系统相关信息，比如主机名、内核版本号、硬件架构等。</p><p>如果未指定任何选项，其效果相当于执行”uname -s”命令，即显示系统内核的名字。</p><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">显示系统所有相关信息</td></tr><tr><td style="text-align:left;">-m</td><td style="text-align:left;">显示计算机硬件架构</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">显示主机名称</td></tr><tr><td style="text-align:left;">-r</td><td style="text-align:left;">显示内核发行版本号</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">显示内核名称</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">显示内核版本</td></tr><tr><td style="text-align:left;">-p</td><td style="text-align:left;">显示主机处理器类型</td></tr><tr><td style="text-align:left;">-o</td><td style="text-align:left;">显示操作系统名称</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">显示硬件平台</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 显示系统主机名、内核版本号、CPU类型等信息：</span></span>
<span class="line"><span style="color:#FFCB6B;">uname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 仅显示系统主机名：</span></span>
<span class="line"><span style="color:#FFCB6B;">uname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示当前系统的内核版本 :</span></span>
<span class="line"><span style="color:#FFCB6B;">uname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-r</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示当前系统的硬件架构：</span></span>
<span class="line"><span style="color:#FFCB6B;">uname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span></span></code></pre></div><h2 id="vmstat-显示虚拟内存状态" tabindex="-1">vmstat 显示虚拟内存状态 <a class="header-anchor" href="#vmstat-显示虚拟内存状态" aria-label="Permalink to &quot;vmstat 显示虚拟内存状态&quot;">​</a></h2><blockquote><p>vmstat命令的含义为显示虚拟内存状态（“Virtual Memory Statistics”），但是它可以报告关于进程、内存、I/O等系统整体运行状态。</p></blockquote><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">显示活动内页</td></tr><tr><td style="text-align:left;">-f</td><td style="text-align:left;">显示启动后创建的进程总数</td></tr><tr><td style="text-align:left;">-m</td><td style="text-align:left;">显示slab信息</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">头信息仅显示一次</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">以表格方式显示事件计数器和内存状态</td></tr><tr><td style="text-align:left;">-d</td><td style="text-align:left;">报告磁盘状态</td></tr><tr><td style="text-align:left;">-p</td><td style="text-align:left;">显示指定的硬盘分区状态</td></tr><tr><td style="text-align:left;">-S</td><td style="text-align:left;">输出信息的单位</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 显示活动内页：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示启动后创建的进程总数：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示slab信息：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-m</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 头信息仅显示一次：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-n</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 以表格方式显示事件计数器和内存状态：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-s</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示指定的硬盘分区状态：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-p</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/dev/sda1</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 指定状态信息刷新的时间间隔为1秒：</span></span>
<span class="line"><span style="color:#FFCB6B;">vmstat</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1</span></span></code></pre></div><h1 id="网络命令⭐" tabindex="-1">网络命令⭐ <a class="header-anchor" href="#网络命令⭐" aria-label="Permalink to &quot;网络命令⭐&quot;">​</a></h1><h2 id="主机名和主机端口映射" tabindex="-1">主机名和主机端口映射 <a class="header-anchor" href="#主机名和主机端口映射" aria-label="Permalink to &quot;主机名和主机端口映射&quot;">​</a></h2><h3 id="ip地址" tabindex="-1">IP地址 <a class="header-anchor" href="#ip地址" aria-label="Permalink to &quot;IP地址&quot;">​</a></h3><p>每一台联网的电脑都会有一个地址，用于和其它计算机进行通讯</p><p>IP地址主要有2个版本，V4版本和V6版本（V6很少用，课程暂不涉及）</p><p>IPv4版本的地址格式是：a.b.c.d，其中abcd表示0~255的数字，如192.168.88.101就是一个标准的IP地址</p><p>可以通过命令：ifconfig，查看本机的ip地址，如无法使用ifconfig命令，可以安装：yum -y install net-tools</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032108053.png" alt="image-20221103210819923" style="zoom:80%;"><h3 id="特殊ip地址" tabindex="-1">特殊IP地址 <a class="header-anchor" href="#特殊ip地址" aria-label="Permalink to &quot;特殊IP地址&quot;">​</a></h3><p>除了标准的IP地址以外，还有几个特殊的IP地址需要我们了解：</p><blockquote><p>127.0.0.1，这个IP地址用于指代本机</p></blockquote><blockquote><p>0.0.0.0，特殊IP地址，可以用于指代本机，可以在端口绑定中用来确定绑定关系（后续讲解）在一些IP地址限制中，表示所有IP的意思，如放行规则设置为0.0.0.0，表示允许任意IP访问</p></blockquote><h3 id="主机名查看和修改" tabindex="-1">主机名查看和修改 <a class="header-anchor" href="#主机名查看和修改" aria-label="Permalink to &quot;主机名查看和修改&quot;">​</a></h3><blockquote><p>每一台电脑除了对外联络地址（IP地址）以外，也可以有一个名字，称之为主机名，无论是Windows或Linux系统，都可以给系统设置主机名</p></blockquote><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 查看当前主机名</span></span>
<span class="line"><span style="color:#FFCB6B;">hostname</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209261220051.png" alt="image-20220926122039971" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">hostnamectl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">set-hostname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">主机名</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 修改主机名（需root）</span></span>
<span class="line"><span style="color:#FFCB6B;">vi</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/hostname</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 修改主机名，重启完生效（方式二）</span></span>
<span class="line"><span style="color:#FFCB6B;">hostnamectl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">set-hostname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">centos</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 修改主机名为centos</span></span></code></pre></div><p>重新登录FinalShell即可看到主机名已经正确显示，主机名已经改变</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032113771.png" alt="image-20221103211332686" style="zoom:80%;"><h3 id="域名解析-主机映射" tabindex="-1">域名解析(主机映射) <a class="header-anchor" href="#域名解析-主机映射" aria-label="Permalink to &quot;域名解析(主机映射)&quot;">​</a></h3><p>IP地址实在是难以记忆，有没有什么办法可以通过主机名或替代的字符地址去代替数字化的IP地址呢？</p><p>实际上，我们一直都是通过字符化的地址去访问服务器，很少指定IP地址。比如，我们在浏览器内打开：www.baidu.com，会打开百度的网址。其中，www.baidu.com，是百度的网址，我们称之为：域名</p><p>修改 linux 的主机映射文件（hosts 文件） 后续在 hadoop 阶段，虚拟机会比较多，配置时通常会采用主机名的方式配置， 比较简单方便。 不用刻意记 ip 地址。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032115598.png" alt="image-20221103211557462" style="zoom:80%;"><ul><li>先查看本机的记录（私人地址本）</li><li>Windows看：C:\Windows\System32\drivers\etc\hosts</li><li>Linux看：/etc/hosts</li><li>再联网去DNS服务器（如114.114.114.114，8.8.8.8等）询问</li></ul><p>相当于windows系统的C:\Windows\System32\drivers\etc\hosts文件的功能</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">vi</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/hosts</span></span></code></pre></div><div class="language-properties"><button title="Copy Code" class="copy"></button><span class="lang">properties</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">192.168.2.100 hadoop100 </span></span>
<span class="line"><span style="color:#A6ACCD;">192.168.2.101 hadoop101 </span></span>
<span class="line"><span style="color:#A6ACCD;">192.168.2.102 hadoop102 </span></span>
<span class="line"><span style="color:#A6ACCD;">192.168.2.103 hadoop103</span></span></code></pre></div><h2 id="配置静态ip" tabindex="-1">配置静态IP <a class="header-anchor" href="#配置静态ip" aria-label="Permalink to &quot;配置静态IP&quot;">​</a></h2><h3 id="设置网段" tabindex="-1">设置网段 <a class="header-anchor" href="#设置网段" aria-label="Permalink to &quot;设置网段&quot;">​</a></h3><p>在VMware的虚拟网络编辑器中，将VMnet8虚拟网卡的</p><blockquote><p>网段设置为：192.168.88.0</p><p>网关设置为：192.168.88.2</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304022109293.png" alt="image-20230402210959236" style="zoom:80%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304022112845.png" alt="image-20230402211209772" style="zoom:67%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304022111775.png" alt="image-20230402211141701" style="zoom:80%;"><h3 id="设置静态ip" tabindex="-1">设置静态IP <a class="header-anchor" href="#设置静态ip" aria-label="Permalink to &quot;设置静态IP&quot;">​</a></h3><p>开启node1，修改主机名为node1，并修改固定ip为：192.168.88.131</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 修改主机名</span></span>
<span class="line"><span style="color:#FFCB6B;">hostnamectl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">set-hostname</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">node1</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 修改IP地址</span></span>
<span class="line"><span style="color:#FFCB6B;">vim</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">/etc/sysconfig/network-scripts/ifcfg-ens33</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 首先将上面的dhcp改成static表示静态获取IP</span></span>
<span class="line"><span style="color:#A6ACCD;">BOOTPROTO</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">static</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 剩下的追加即可</span></span>
<span class="line"><span style="color:#A6ACCD;">IPADDR</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">192.168.88.101</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#A6ACCD;">NETMASK</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">255.255.255.0</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#A6ACCD;">GATEWAY</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">192.168.88.2</span><span style="color:#89DDFF;">&quot;</span></span>
<span class="line"><span style="color:#A6ACCD;">DNS1</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">192.168.88.2</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 重启网卡</span></span>
<span class="line"><span style="color:#FFCB6B;">systemctl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">restart</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">network</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看IP</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304022148898.png" alt="image-20230402214818848" style="zoom:80%;"><p>同样的操作启动node2和node3，除了hostname和IPADDR要变之外，其他都一样</p><p>修改node2主机名为node2，设置ip为192.168.88.102</p><p>修改node2主机名为node3，设置ip为192.168.88.103</p><h2 id="curl和wget" tabindex="-1">curl和wget <a class="header-anchor" href="#curl和wget" aria-label="Permalink to &quot;curl和wget&quot;">​</a></h2><p><a href="https://so.csdn.net/so/search?q=curl&amp;spm=1001.2101.3001.7020" target="_blank" rel="noreferrer">curl</a>和wget基础功能有诸多重叠，如下载等。</p><p>在高级用途上的curl由于可自定义各种请求参数所以长于模拟web请求，用于测试网页交互（浏览器）；<a href="https://so.csdn.net/so/search?q=wget&amp;spm=1001.2101.3001.7020" target="_blank" rel="noreferrer">wget</a>由于支持ftp和Recursive所以长于下载，用于下载文件（迅雷）。</p><h3 id="wget-下载文件" tabindex="-1">wget 下载文件 <a class="header-anchor" href="#wget-下载文件" aria-label="Permalink to &quot;wget 下载文件&quot;">​</a></h3><p>wget是非交互式的文件下载器，可以在命令行内下载网络文件</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wget</span><span style="color:#A6ACCD;"> [-b] url</span></span></code></pre></div><ul><li>选项：-b，可选，后台下载，会将日志写入到当前工作目录的wget-log文件</li><li>参数：url，下载链接</li></ul><p>下载apache-hadoop 3.3.0版本</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz</span></span>
<span class="line"><span style="color:#FFCB6B;">wget</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-b</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz</span></span></code></pre></div><p>通过tail命令可以监控后台下载进度：tail -f wget-log</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032128750.png" alt="image-20221103212859625" style="zoom:80%;"><p>注意：无论下载是否完成，都会生成要下载的文件，如果下载未完成，请及时清理未完成的不可用文件。</p><p>杀死后台软件</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">ps</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ef</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">wget</span></span>
<span class="line"><span style="color:#82AAFF;">kill</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-9</span><span style="color:#A6ACCD;">  </span><span style="color:#F78C6C;">29689</span><span style="color:#A6ACCD;">  </span><span style="color:#F78C6C;">30628</span></span></code></pre></div><h3 id="curl-发起网络请求" tabindex="-1">curl 发起网络请求 <a class="header-anchor" href="#curl-发起网络请求" aria-label="Permalink to &quot;curl 发起网络请求&quot;">​</a></h3><p>curl可以发送http网络请求，可用于：下载文件、获取信息等</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> [-O] url</span></span></code></pre></div><ul><li>选项：-O，用于下载文件，当url是下载链接时，可以使用此选项保存文件</li><li>参数：url，要发起请求的网络地址</li></ul><h4 id="_1、发送get请求" tabindex="-1">1、发送GET请求 <a class="header-anchor" href="#_1、发送get请求" aria-label="Permalink to &quot;1、发送GET请求&quot;">​</a></h4><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">URL</span></span>
<span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">URL?a=</span><span style="color:#F78C6C;">1</span><span style="color:#89DDFF;">&amp;</span><span style="color:#A6ACCD;">b</span><span style="color:#89DDFF;">=</span><span style="color:#C3E88D;">nihao</span></span></code></pre></div><h4 id="_2、发送post请求" tabindex="-1">2、发送POST请求 <a class="header-anchor" href="#_2、发送post请求" aria-label="Permalink to &quot;2、发送POST请求&quot;">​</a></h4><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-X</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">POST</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">a=1&amp;b=nihao</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">URL</span></span></code></pre></div><h4 id="_3、发送json格式请求" tabindex="-1">3、发送json格式请求 <a class="header-anchor" href="#_3、发送json格式请求" aria-label="Permalink to &quot;3、发送json格式请求&quot;">​</a></h4><div class="language-bash"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-H</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">Content-Type: application/json</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-X</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">POST</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&#39;</span><span style="color:#C3E88D;">{&quot;abc&quot;:123,&quot;bcd&quot;:&quot;nihao&quot;}</span><span style="color:#89DDFF;">&#39;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">URL</span></span>
<span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-H</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">Content-Type: application/json</span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-X</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">POST</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">@test.json</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">URL</span></span></code></pre></div><p>其中，<strong>-H</strong>代表header头，<strong>-X</strong>是指定什么类型请求(POST/GET/HEAD/DELETE/PUT/PATCH)，<strong>-d</strong>代表传输什么数据。这几个是最常用的。</p><h4 id="_4、获取所有请求头" tabindex="-1">4、获取所有请求头 <a class="header-anchor" href="#_4、获取所有请求头" aria-label="Permalink to &quot;4、获取所有请求头&quot;">​</a></h4><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">I https:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">blog</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">csdn</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205221807074.png" alt="image-20220522180718990" style="zoom:67%;"><h4 id="_5、下载文件" tabindex="-1">5、下载文件 <a class="header-anchor" href="#_5、下载文件" aria-label="Permalink to &quot;5、下载文件&quot;">​</a></h4><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">O http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">man</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">text</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso     </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">O大写，不用O只是打印内容不会下载</span></span>
<span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 自己命名下载后的文件名</span></span>
<span class="line"><span style="color:#A6ACCD;">curl </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">o 文件名  URL</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205221814770.png" alt="image-20220522181408671" style="zoom:50%;"><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205221814926.png" alt="image-20220522181434828" style="zoom:80%;"><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-O</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-J</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-L</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;">https://download.cowcs.com/cowtransfer/cowtransfer/15154/a294b4a08</span><span style="color:#89DDFF;">&quot;</span></span></code></pre></div><p>这个命令中的参数说明如下：</p><ul><li><code>-O</code>：将文件保存在本地，使用服务器上的文件名。</li><li><code>-J</code>：使用响应头中的文件名作为保存的文件名。</li><li><code>-L</code>：跟随重定向，如果服务器返回重定向响应，<code>curl</code>会自动跳转到新的URL。</li></ul><h4 id="_6、跟随重定向" tabindex="-1">6、跟随重定向 <a class="header-anchor" href="#_6、跟随重定向" aria-label="Permalink to &quot;6、跟随重定向&quot;">​</a></h4><p>网址进入可能会进行跳转</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl URL </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">L</span></span></code></pre></div><h4 id="_7、查询可能出现的问题" tabindex="-1">7、查询可能出现的问题 <a class="header-anchor" href="#_7、查询可能出现的问题" aria-label="Permalink to &quot;7、查询可能出现的问题&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205221812180.png" alt="image-20220522181236105" style="zoom:50%;"><h4 id="_8、代理访问" tabindex="-1">8、代理访问 <a class="header-anchor" href="#_8、代理访问" aria-label="Permalink to &quot;8、代理访问&quot;">​</a></h4><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205221813423.png" alt="image-20220522181320295" style="zoom:50%;"><h4 id="_9、断点续传" tabindex="-1">9、断点续传 <a class="header-anchor" href="#_9、断点续传" aria-label="Permalink to &quot;9、断点续传&quot;">​</a></h4><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">O </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">C </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">URL http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">man</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">text</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso            </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">C大写</span></span>
<span class="line"><span style="color:#A6ACCD;">wget </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">c http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">www</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">text</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso                    </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;">c小写</span></span></code></pre></div><h4 id="_10、限速下载" tabindex="-1">10、限速下载 <a class="header-anchor" href="#_10、限速下载" aria-label="Permalink to &quot;10、限速下载&quot;">​</a></h4><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">limit</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">rate </span><span style="color:#F78C6C;">50k</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">O http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">man</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">text</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso</span></span>
<span class="line"><span style="color:#A6ACCD;">wget </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">limit</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">rate</span><span style="color:#89DDFF;">=</span><span style="color:#F78C6C;">50k</span><span style="color:#A6ACCD;"> http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">www</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">text</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso</span></span></code></pre></div><h4 id="_11、显示响应头部信息" tabindex="-1">11、显示响应头部信息 <a class="header-anchor" href="#_11、显示响应头部信息" aria-label="Permalink to &quot;11、显示响应头部信息&quot;">​</a></h4><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">curl </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">I http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">man</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">text</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso</span></span>
<span class="line"><span style="color:#A6ACCD;">wget </span><span style="color:#89DDFF;">--</span><span style="color:#A6ACCD;">server</span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">response http:</span><span style="color:#89DDFF;">//</span><span style="color:#A6ACCD;">www</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">linuxde</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">net</span><span style="color:#89DDFF;">/</span><span style="color:#A6ACCD;">test</span><span style="color:#89DDFF;">.</span><span style="color:#A6ACCD;">iso</span></span></code></pre></div><h2 id="端口⭐⭐" tabindex="-1">端口⭐⭐ <a class="header-anchor" href="#端口⭐⭐" aria-label="Permalink to &quot;端口⭐⭐&quot;">​</a></h2><p>端口，是设备与外界通讯交流的出入口。端口可以分为：物理端口和虚拟端口两类</p><ul><li>物理端口：又可称之为接口，是可见的端口，如USB接口，RJ45网口，HDMI端口等</li><li>虚拟端口：是指计算机内部的端口，是不可见的，是用来操作系统和外部进行交互使用的</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032138100.png" alt="image-20221103213844985" style="zoom:80%;"><h3 id="端口-虚拟" tabindex="-1">端口(虚拟) <a class="header-anchor" href="#端口-虚拟" aria-label="Permalink to &quot;端口(虚拟)&quot;">​</a></h3><p>物理端口我们日常生活中经常见到，也能知晓它的作用。但是虚拟端口，有什么用？为什么需要它呢？</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032140580.png" alt="image-20221103214047491" style="zoom:80%;"><p>计算机程序之间的通讯，通过IP只能锁定计算机，但是无法锁定具体的程序。</p><p>通过端口可以锁定计算机上具体的程序，确保程序之间进行沟通</p><p>IP地址相当于小区地址，在小区内可以有许多住户（程序），而门牌号（端口）就是各个住户（程序）的联系地址</p><h3 id="端口分析" tabindex="-1">端口分析 <a class="header-anchor" href="#端口分析" aria-label="Permalink to &quot;端口分析&quot;">​</a></h3><p>Linux系统是一个超大号小区，可以支持65535个端口，这6万多个端口分为3类进行使用：</p><ul><li>公认端口：1~1023，通常用于一些系统内置或知名程序的预留使用，如SSH服务的22端口，HTTPS服务的443端口非特殊需要，不要占用这个范围的端口</li><li>注册端口：1024~49151，通常可以随意使用，用于松散的绑定一些程序服务</li><li>动态端口：49152~65535，通常不会固定绑定程序，而是当程序对外进行网络链接时，用于临时使用。</li></ul><p>如图中，计算机A的微信连接计算机B的微信，A使用的50001即动态端口，临时找一个端口作为出口</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032142795.png" alt="image-20221103214223712" style="zoom:80%;"><p>计算机B的微信使用端口5678，即注册端口，长期绑定此端口等待别人连接</p><h3 id="查看ip占用⭐" tabindex="-1">查看IP占用⭐ <a class="header-anchor" href="#查看ip占用⭐" aria-label="Permalink to &quot;查看IP占用⭐&quot;">​</a></h3><h3 id="nmap" tabindex="-1">nmap <a class="header-anchor" href="#nmap" aria-label="Permalink to &quot;nmap&quot;">​</a></h3><p>可以通过Linux命令去查看端口的占用情况，使用nmap命令，安装nmap：yum -y install nmap</p><p>语法：nmap 被查看的IP地址</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">nmap</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">127.0</span><span style="color:#C3E88D;">.0.1</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032145575.png" alt="image-20221103214513447" style="zoom:80%;"><p>可以看到，本机（127.0.0.1）上有4个端口现在被程序占用了。</p><p>其中：22端口，一般是SSH服务使用，即FinalShell远程连接Linux所使用的端口</p><h2 id="端口占用⭐⭐" tabindex="-1">端口占用⭐⭐ <a class="header-anchor" href="#端口占用⭐⭐" aria-label="Permalink to &quot;端口占用⭐⭐&quot;">​</a></h2><h3 id="基本语法-2" tabindex="-1">基本语法 <a class="header-anchor" href="#基本语法-2" aria-label="Permalink to &quot;基本语法&quot;">​</a></h3><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-anlp</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;"># 整个 Linux 系统的网络情况</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-anp</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">进程号</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#（功能描述：查看该进程网络信息）</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">–nlp</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">端口号</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#（功能描述：查看网络端口号占用情况）</span></span></code></pre></div><p>选项说明</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252249439.png" alt="image-20220925224923307" style="zoom:80%;"><h3 id="查询进程" tabindex="-1">查询进程 <a class="header-anchor" href="#查询进程" aria-label="Permalink to &quot;查询进程&quot;">​</a></h3><p>会显示所有端口和所有对应的程序，用grep管道可以过滤出想要的关键字段。</p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 通过进程号查看sshd进程的网络信息</span></span>
<span class="line"><span style="color:#A6ACCD;">netstat </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">anlp </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;">grep sshd</span></span></code></pre></div><h3 id="查询端口占用⭐" tabindex="-1">查询端口占用⭐ <a class="header-anchor" href="#查询端口占用⭐" aria-label="Permalink to &quot;查询端口占用⭐&quot;">​</a></h3><blockquote><p>有关22端口占用的程序，两种方式</p></blockquote><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">lsof </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">i:</span><span style="color:#F78C6C;">22</span></span>
<span class="line"><span style="color:#A6ACCD;">netstat </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">nltp </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> grep </span><span style="color:#F78C6C;">22</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.8.30/202209101537930.png" alt="image-20220910153734819" style="zoom:80%;"><h2 id="ssh-远程连接" tabindex="-1">ssh 远程连接 <a class="header-anchor" href="#ssh-远程连接" aria-label="Permalink to &quot;ssh 远程连接&quot;">​</a></h2><p>ssh 命令用于连接基于 Linux 的远程主机。要使用 root 用户连接远程主机，需要使用以下命令：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">ssh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">root@192.168.4.21</span></span></code></pre></div><p>上面的命令将不支持 GUI，如果想使用 GUI 连接远程主机，需要使用下面的命令：</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">ssh</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-XY</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">root@192.168.4.21</span></span></code></pre></div><h2 id="curl-获取公网ip地址" tabindex="-1">curl 获取公网IP地址 <a class="header-anchor" href="#curl-获取公网ip地址" aria-label="Permalink to &quot;curl 获取公网IP地址&quot;">​</a></h2><p>在办公或家庭环境，我们的虚拟机或服务器上配置的通常是内网 IP 地址，我们如何知道，在与外网通信时，我们的公网出口 IP 是神马呢？这个在 Linux 上非常简单，一条命令搞定</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 推荐使用第一条命令</span></span>
<span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">cip.cc</span></span>
<span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ip.sb</span></span>
<span class="line"><span style="color:#FFCB6B;">curl</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ifconfig.me</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2023.3.30/202304181743387.png" alt="image-20230418174354010" style="zoom:80%;"><h2 id="ping-测试主机间网络连通性" tabindex="-1">ping 测试主机间网络连通性 <a class="header-anchor" href="#ping-测试主机间网络连通性" aria-label="Permalink to &quot;ping  测试主机间网络连通性&quot;">​</a></h2><blockquote><p>ping命令主要用来测试主机之间网络的连通性，也可以用于。执行ping指令会使用ICMP传输协议，发出要求回应的信息，若远端主机的网络功能没有问题，就会回应该信息，因而得知该主机运作正常。</p></blockquote><blockquote><p>不过值得我们注意的是：Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows下运行ping命令一般会发出4个请求就结束运行该命令；而Linux下不会自动终止，此时需要我们按CTR+C终止或者使用-c参数为ping命令指定发送的请求数目。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-d</td><td style="text-align:left;">使用Socket的SO_DEBUG功能</td></tr><tr><td style="text-align:left;">-c</td><td style="text-align:left;">指定发送报文的次数</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">指定收发信息的间隔时间</td></tr><tr><td style="text-align:left;">-I</td><td style="text-align:left;">使用指定的网络接口送出数据包</td></tr><tr><td style="text-align:left;">-l</td><td style="text-align:left;">设置在送出要求信息之前，先行发出的数据包</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">只输出数值</td></tr><tr><td style="text-align:left;">-p</td><td style="text-align:left;">设置填满数据包的范本样式</td></tr><tr><td style="text-align:left;">-q</td><td style="text-align:left;">不显示指令执行过程</td></tr><tr><td style="text-align:left;">-R</td><td style="text-align:left;">记录路由过程</td></tr><tr><td style="text-align:left;">-s</td><td style="text-align:left;">设置数据包的大小</td></tr><tr><td style="text-align:left;">-t</td><td style="text-align:left;">设置存活数值TTL的大小</td></tr><tr><td style="text-align:left;">-v</td><td style="text-align:left;">详细显示指令的执行过程</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 语法格式：ping [参数] [目标主机]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 检测与百度网站的连通性</span></span>
<span class="line"><span style="color:#FFCB6B;">ping</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">www.baidu.com</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 连续ping4次</span></span>
<span class="line"><span style="color:#FFCB6B;">ping</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">4</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">www.baidu.com</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 设置次数为4，时间间隔为3秒</span></span>
<span class="line"><span style="color:#FFCB6B;">ping</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">4</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">www.baidu.com</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 利用ping命令获取指定网站的IP地址</span></span>
<span class="line"><span style="color:#FFCB6B;">ping</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-c</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">baidu.com</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">from</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">cut</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-d</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#C3E88D;"> </span><span style="color:#89DDFF;">&quot;</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-f</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">4</span></span></code></pre></div><h2 id="ifconfig-显示或设置网络设备" tabindex="-1">ifconfig 显示或设置网络设备 <a class="header-anchor" href="#ifconfig-显示或设置网络设备" aria-label="Permalink to &quot;ifconfig 显示或设置网络设备&quot;">​</a></h2><blockquote><p>ifconfig命令的英文全称是“network interfaces configuring”，即用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息，在网卡重启后机器重启后，配置就不存在。要想将上述的配置信息永远的存的电脑里，那就要修改网卡的配置文件了。</p></blockquote><p><strong>常用参数：</strong></p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">add&lt;地址&gt;</td><td style="text-align:left;">设置网络设备IPv6的IP地址</td></tr><tr><td style="text-align:left;">del&lt;地址&gt;</td><td style="text-align:left;">删除网络设备IPv6的IP地址</td></tr><tr><td style="text-align:left;">down</td><td style="text-align:left;">关闭指定的网络设备</td></tr><tr><td style="text-align:left;">up</td><td style="text-align:left;">启动指定的网络设备</td></tr><tr><td style="text-align:left;">IP地址</td><td style="text-align:left;">指定网络设备的IP地址</td></tr></tbody></table><p><strong>参考实例：</strong></p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># ifconfig [参数]</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示网络设备信息</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 启动关闭指定网卡</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">down</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">up</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 为网卡配置和删除IPv6地址</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">add</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">33</span><span style="color:#C3E88D;">ffe:3240:800:1005::2/64</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">del</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">33</span><span style="color:#C3E88D;">ffe:3240:800:1005::2/64</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 用ifconfig修改MAC地址</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">down</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hw</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ether</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">00</span><span style="color:#C3E88D;">:AA:BB:CC:DD:EE</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">up</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">hw</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">ether</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">00</span><span style="color:#C3E88D;">:1D:1C:1D:1E</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth1</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">up</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 配置IP地址</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">192.168</span><span style="color:#C3E88D;">.1.56</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">192.168</span><span style="color:#C3E88D;">.1.56</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">netmask</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">255.255</span><span style="color:#C3E88D;">.255.0</span></span>
<span class="line"><span style="color:#FFCB6B;">ifconfig</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">eth0</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">192.168</span><span style="color:#C3E88D;">.1.56</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">netmask</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">255.255</span><span style="color:#C3E88D;">.255.0</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">broadcast</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">192.168</span><span style="color:#C3E88D;">.1.255</span></span></code></pre></div><h2 id="netstat-显示网络状态" tabindex="-1">netstat 显示网络状态 <a class="header-anchor" href="#netstat-显示网络状态" aria-label="Permalink to &quot;netstat 显示网络状态&quot;">​</a></h2><p>netstat 命令用于显示各种网络相关信息，如网络连接，路由表，接口状态 (Interface Statistics)，masquerade 连接，多播成员 (Multicast Memberships) 等等。</p><table><thead><tr><th style="text-align:left;">参数</th><th style="text-align:left;">描述</th></tr></thead><tbody><tr><td style="text-align:left;">-a</td><td style="text-align:left;">显示所有连线中的Socket</td></tr><tr><td style="text-align:left;">-p</td><td style="text-align:left;">显示正在使用Socket的程序识别码和程序名称</td></tr><tr><td style="text-align:left;">-u</td><td style="text-align:left;">显示UDP传输协议的连线状况</td></tr><tr><td style="text-align:left;">-i</td><td style="text-align:left;">显示网络界面信息表单</td></tr><tr><td style="text-align:left;">-n</td><td style="text-align:left;">直接使用IP地址，不通过域名服务器</td></tr></tbody></table><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 显示详细的网络状况</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-a</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示当前户籍UDP连接状况</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-nu</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示UDP端口号的使用情况</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-apu</span><span style="color:#A6ACCD;"> </span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示网卡列表</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-i</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 显示组播组的关系</span></span>
<span class="line"><span style="color:#FFCB6B;">netstat</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-g</span></span></code></pre></div><h1 id="进程管理⭐⭐" tabindex="-1">进程管理⭐⭐ <a class="header-anchor" href="#进程管理⭐⭐" aria-label="Permalink to &quot;进程管理⭐⭐&quot;">​</a></h1><h2 id="查看进程" tabindex="-1">查看进程 <a class="header-anchor" href="#查看进程" aria-label="Permalink to &quot;查看进程&quot;">​</a></h2><p>程序运行在操作系统中，是被操作系统所管理的。为管理运行的程序，每一个程序在运行的时候，便被操作系统注册为系统中的一个：进程并会为每一个进程都分配一个独有的：进程ID（进程号）</p><blockquote><p>如果想查看进程的 CPU 占用率和内存占用率，可以使用 aux;</p><p>如果想查看进程的父进程 ID 可以使用 ef;</p></blockquote><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252308517.png" alt="image-20220925230847386" style="zoom:80%;"><ul><li>ps -axu | grep xxx：过滤得到xxx的信息。</li><li>ps -ef：以全格式显示当前所有的进程，查看进程的父进程。</li></ul><div class="language-shell"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#676E95;font-style:italic;"># 查找运行中的进程</span></span>
<span class="line"><span style="color:#FFCB6B;">ps</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-axu</span><span style="color:#A6ACCD;"> </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mysql</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 经典应用</span></span>
<span class="line"><span style="color:#FFCB6B;">ps</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ef</span><span style="color:#A6ACCD;">  </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">mysql</span></span>
<span class="line"><span style="color:#676E95;font-style:italic;"># 查看端口</span></span>
<span class="line"><span style="color:#FFCB6B;">ps</span><span style="color:#A6ACCD;"> </span><span style="color:#C3E88D;">-ef</span><span style="color:#A6ACCD;">  </span><span style="color:#89DDFF;">|</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">grep</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">3306</span></span></code></pre></div><p>一般来说，固定用法就是： ps -ef 列出全部进程的全部信息</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211032152852.png" alt="image-20221103215227729" style="zoom:80%;"><h2 id="杀死进程" tabindex="-1">杀死进程 <a class="header-anchor" href="#杀死进程" aria-label="Permalink to &quot;杀死进程&quot;">​</a></h2><p>在Windows系统中，可以通过任务管理器选择进程后，点击结束进程从而关闭它。</p><p>同样，在Linux中，可以通过kill命令关闭进程。</p><div class="language-sh"><button title="Copy Code" class="copy"></button><span class="lang">sh</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#82AAFF;">kill</span><span style="color:#A6ACCD;"> [-9] 进程ID</span></span></code></pre></div><p>选项：-9，表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭，但是否关闭看进程自身的处理机制。</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205251443511.png" alt="image-20220525144330435" style="zoom:80%;"><p>杀死进程时，可以跟信号，信号很多，常用信号：</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.5.13/202205251444396.png" alt="image-20220525144403328" style="zoom:80%;"><p>所以常用杀死进程的命令：正常杀死 <code>kill -1 2235</code> 或者强制杀死 <code>kill -9 2235</code></p><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">kill </span><span style="color:#89DDFF;">-</span><span style="color:#F78C6C;">9</span><span style="color:#A6ACCD;"> </span><span style="color:#F78C6C;">5102</span></span>
<span class="line"><span style="color:#A6ACCD;">killall firefox</span></span></code></pre></div><h2 id="查看进程树-pstree-选项" tabindex="-1">查看进程树：pstree [选项] <a class="header-anchor" href="#查看进程树-pstree-选项" aria-label="Permalink to &quot;查看进程树：pstree [选项]&quot;">​</a></h2><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">pstree </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">选项</span><span style="color:#89DDFF;">]</span></span></code></pre></div><ul><li>-p：显示进程的PID</li><li>-u：显示进程的所属用户</li></ul><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">pstree </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">p </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示进程 pid</span></span>
<span class="line"><span style="color:#A6ACCD;">pstree </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">u </span><span style="color:#89DDFF;">#</span><span style="color:#A6ACCD;"> 显示进程所属用户</span></span></code></pre></div><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252305529.png" alt="image-20220925230540346" style="zoom:80%;"><h2 id="实时监控进程" tabindex="-1">实时监控进程 <a class="header-anchor" href="#实时监控进程" aria-label="Permalink to &quot;实时监控进程&quot;">​</a></h2><blockquote><p>top和ps最大的不同之处在于<strong>top在执行一段时间可以更新正在运行的进程</strong>。</p></blockquote><h3 id="top入门" tabindex="-1">top入门 <a class="header-anchor" href="#top入门" aria-label="Permalink to &quot;top入门&quot;">​</a></h3><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">top </span><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">选项</span><span style="color:#89DDFF;">]</span></span></code></pre></div><p>选项说明</p><ul><li>-d 秒数：指定top命令每隔几秒更新。默认是3秒。</li><li>-i：使top不显示任何闲置或者僵死进程。</li><li>-p：通过指定监控进程ID来仅仅监控某个进程的状态。</li></ul><p>操作说明</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252258977.png" alt="image-20220925225823872" style="zoom:80%;"><div class="language-apl"><button title="Copy Code" class="copy"></button><span class="lang">apl</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">top </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">d </span><span style="color:#F78C6C;">1</span></span>
<span class="line"><span style="color:#A6ACCD;">top </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">i</span></span>
<span class="line"><span style="color:#A6ACCD;">top </span><span style="color:#89DDFF;">-</span><span style="color:#A6ACCD;">p </span><span style="color:#F78C6C;">2575</span></span></code></pre></div><blockquote><p>执行上述命令后，可以按 P、M、N 对查询出的进程结果进行排序</p></blockquote><h3 id="返回结果分析⭐" tabindex="-1">返回结果分析⭐ <a class="header-anchor" href="#返回结果分析⭐" aria-label="Permalink to &quot;返回结果分析⭐&quot;">​</a></h3><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252300731.png" alt="image-20220925230040587" style="zoom:80%;"><p>第一行信息为任务队列信息</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252301476.png" alt="image-20220925230124362" style="zoom:80%;"><p>第二行为进程信息</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252301474.png" alt="image-20220925230158370" style="zoom:80%;"><p>第三行为 CPU 信息</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252302057.png" alt="image-20220925230230945" style="zoom:80%;"><p>第四行为物理内存信息</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252302122.png" alt="image-20220925230255009" style="zoom:80%;"><p>第五行为交换分区（swap）信息</p><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.10.30/202209252303107.png" alt="image-20220925230317990" style="zoom:80%;"><h1 id="上传和下载" tabindex="-1">上传和下载 <a class="header-anchor" href="#上传和下载" aria-label="Permalink to &quot;上传和下载&quot;">​</a></h1><h2 id="finalshell-1" tabindex="-1">FinalShell <a class="header-anchor" href="#finalshell-1" aria-label="Permalink to &quot;FinalShell&quot;">​</a></h2><p>我们可以通过FinalShell工具，方便的和虚拟机进行数据交换。在FinalShell软件的下方窗体中，提供了Linux的文件系统视图，可以方便的：</p><ul><li>浏览文件系统，找到合适的文件，右键点击下载，即可传输到本地电脑</li><li>浏览文件系统，找到合适的目录，将本地电脑的文件拓展进入，即可方便的上传数据到Linux中</li></ul><img src="https://edu-8673.oss-cn-beijing.aliyuncs.com/img2022.12.30/202211040903696.png" alt="image-20221104090335565" style="zoom:80%;"></div></div></main><footer class="VPDocFooter" data-v-6b87e69f data-v-37656e44><!--[--><!--]--><!----><nav class="prev-next" data-v-37656e44><div class="pager" data-v-37656e44><a class="pager-link prev" href="/notebook/Java/Java%E9%AB%98%E7%BA%A7.html" data-v-37656e44><span class="desc" data-v-37656e44>Previous page</span><span class="title" data-v-37656e44>Java高级</span></a></div><div class="pager" data-v-37656e44><a class="pager-link next" href="/notebook/Linux/Linux%E8%BF%9B%E9%98%B6.html" data-v-37656e44><span class="desc" data-v-37656e44>Next page</span><span class="title" data-v-37656e44>Linux新特性</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"2、数据库_mysql_mysql面试_基础.md\":\"40da680a\",\"1、学前端_5、小程序_小程序项目.md\":\"60a1629b\",\"1、学前端_4、node_知识篇.md\":\"a7fb500e\",\"1、学前端_2、js_ts_es6 进阶.md\":\"6d07ba10\",\"1、学前端_3、vue_vue3_vue3进阶.md\":\"7ac622b4\",\"5、运维_jenkins.md\":\"929081f8\",\"1、学前端_2、js_ts_typescript.md\":\"875a4aa4\",\"2、数据库_mysql_mysql核心_设计.md\":\"7faf46d1\",\"2、数据库_mysql_mysql核心_基础.md\":\"d8e97f3e\",\"1、学前端_1、html_css_html基础.md\":\"7584d076\",\"1、学前端_5、专题篇_问题篇.md\":\"e893aaa2\",\"2、数据库_mysql_mysql面试_进阶.md\":\"f934806d\",\"3、springboot_运维_原理.md\":\"f4a39db6\",\"2、数据库_influxdb.md\":\"6e1711e1\",\"3、springboot_新特性.md\":\"cdf3e307\",\"mybatis_mybatisplus_jpa.md\":\"8e41681b\",\"1、学前端_5、小程序_小程序优化.md\":\"a2185198\",\"2、数据库_redis_redis基础.md\":\"856df0e0\",\"linux_实用脚本.md\":\"f2299dd5\",\"4、微服务_必备_分布式基础.md\":\"d49863d5\",\"2、数据库_redis_redis优化.md\":\"e66ae32f\",\"4、微服务_springsecurity_进阶篇.md\":\"235a8e9e\",\"5、运维_chatgpt.md\":\"10db3823\",\"2、数据库_mysql_分库分表.md\":\"e1c8a095\",\"start.md\":\"9bc1ff8d\",\"5、运维_github.md\":\"2ec6c735\",\"java学前端_css.md\":\"f11b47f0\",\"1、学前端_5、专题篇_知识篇.md\":\"a463ed8d\",\"linux_软件部署.md\":\"d6722925\",\"2、数据库_neo4j.md\":\"97ad22ac\",\"team.md\":\"ce467a6a\",\"nginx_实战篇.md\":\"7785486e\",\"index.md\":\"8c3ec167\",\"计算机基础_计算机网络_网络基础.md\":\"7a54a85d\",\"1、学前端_4、node_进阶篇.md\":\"60f6db69\",\"java_java集合.md\":\"a049b313\",\"1、学前端_3、vue_vue3_vue3高级.md\":\"614d1516\",\"1、学前端_5、小程序_微信小程序.md\":\"9a4be771\",\"5、运维_netty.md\":\"12ca0278\",\"2、数据库_mysql_mysql核心_运维.md\":\"83f97c16\",\"idea_vs code.md\":\"afdcb593\",\"java学前端_vue3_组件.md\":\"1086884e\",\"idea_chrome.md\":\"4a32afbc\",\"云原生_k8s.md\":\"db58e65a\",\"2、数据库_mysql_mysql核心_进阶.md\":\"61d16dff\",\"ssm_springbatch.md\":\"f799ab4a\",\"三高_分布式.md\":\"db1b8a1b\",\"2、数据库_elasticsearch_1、es基础.md\":\"04d17448\",\"linux_linux基础.md\":\"4b0bf394\",\"idea_idea插件.md\":\"fa86e45a\",\"可视化 _ 监控_可视化大屏.md\":\"004553bd\",\"2、数据库_mongodb_整合.md\":\"3c47d7f4\",\"4、微服务_springsecurity_基础篇.md\":\"534a3401\",\"4、微服务_进阶.md\":\"69095c58\",\"计算机基础_计算机基础_操作系统.md\":\"0f75d113\",\"可视化 _ 监控_zabbix.md\":\"71f2270e\",\"nginx_基础篇.md\":\"c7d8bb50\",\"1、学前端_4、node_项目实战.md\":\"bc5065b8\",\"2、数据库_redis_redis原理.md\":\"5cedf685\",\"可视化 _ 监控_监控基础.md\":\"ac56ce4d\",\"三高_高并发.md\":\"ea9ffc99\",\"2、数据库_redis_redis高级.md\":\"1d5872f6\",\"1、学前端_4、node_基础篇.md\":\"581cc13a\",\"2、数据库_mongodb_基础.md\":\"fb7a0a29\",\"idea_idea基础.md\":\"6f2f9638\",\"4、微服务_必备_sentinel.md\":\"2edfbf6c\",\"2、数据库_elasticsearch_3、es高级.md\":\"ef146606\",\"1、学前端_3、vue_vue3_vue3新语法.md\":\"8afd5409\",\"消息中间件_canal.md\":\"3949163c\",\"ssm_maven.md\":\"2c5e12ed\",\"4、微服务_springsecurity_高级篇.md\":\"882d3ff3\",\"linux_linux进阶.md\":\"188ef7b4\",\"计算机基础_设计模式_uml.md\":\"634ba256\",\"计算机基础_算法_leetcode.md\":\"77162fb9\",\"项目实战_小兔鲜_进阶篇1.md\":\"17c52c81\",\"1、学前端_2、js_ts_es6 基础.md\":\"fda3f18b\",\"项目实战_小兔鲜_进阶篇2.md\":\"a0f23006\",\"软件测试_测试基础.md\":\"8c1060cd\",\"2、数据库_redis_本地缓存.md\":\"00617fe6\",\"nginx_面试篇.md\":\"e3fb373a\",\"mybatis_mybatisplus_mybatis.md\":\"9239e0ad\",\"linux_shell.md\":\"ae53d83b\",\"2、数据库_mysql_mysql核心_优化.md\":\"36230425\",\"项目实战_项目推荐.md\":\"f9d97630\",\"mybatis_mybatisplus_mybatisplus.md\":\"0030fd35\",\"项目实战_百度地图_进阶篇.md\":\"c8b93267\",\"三高_高可用.md\":\"323840c5\",\"java_java新特性.md\":\"22abf56d\",\"软件测试_压力测试.md\":\"9ab44440\",\"java学前端_html_js.md\":\"e0fcd240\",\"2、数据库_redis_redis实战.md\":\"d6daeeab\",\"nginx_进阶篇.md\":\"e6b63195\",\"三高_秒杀.md\":\"3878bb64\",\"5、运维_git.md\":\"0264925c\",\"java_java进阶.md\":\"e79cb5b4\",\"并发 _ 多线程_基础篇.md\":\"7adbfac5\",\"项目实战_百度地图_基础篇.md\":\"8afa5954\",\"java学前端_react.md\":\"3ec827dd\",\"1、学前端_1、html_css_css基础.md\":\"01b56712\",\"项目实战_小兔鲜_基础篇.md\":\"646f5df5\",\"1、学前端_2、js_ts_js 基础.md\":\"cb13e36f\",\"可视化 _ 监控_监控进阶.md\":\"0cdbc292\",\"计算机基础_设计模式_基础篇.md\":\"51617287\",\"计算机基础_数据结构_基础篇.md\":\"b2bfd8d4\",\"项目实战_苍穹外卖_进阶篇.md\":\"48415e41\",\"ssm_spring.md\":\"ab514659\",\"消息中间件_rabbitmq.md\":\"45b1eb28\",\"1、学前端_1、html_css_网页进阶.md\":\"db998248\",\"消息中间件_kafka.md\":\"b747dabf\",\"云原生_docker.md\":\"983c7ba7\",\"4、微服务_必备_分布式锁.md\":\"5af1cf8d\",\"消息中间件_rocketmq.md\":\"d441da85\",\"项目实战_黑马头条_基础篇.md\":\"b05af3a6\",\"ssm_springmvc.md\":\"81b9714f\",\"项目实战_支付.md\":\"1d7407dd\",\"项目实战_黑马头条_进阶篇2.md\":\"bff0015b\",\"项目实战_黑马头条_进阶篇.md\":\"19f18388\",\"java学前端_vue2_组件.md\":\"58c6b1df\",\"3、springboot_基础篇.md\":\"529c66f4\",\"3、springboot_应用篇.md\":\"8b92aa61\",\"项目实战_黑马头条_高级篇.md\":\"227c08c1\",\"1、学前端_5、小程序_uniapp.md\":\"71a282b4\",\"项目实战_云尚办公_基础篇.md\":\"1fe188ba\",\"并发 _ 多线程_并发完善.md\":\"26619c46\",\"1、学前端_2、js_ts_js 进阶.md\":\"657dfb8f\",\"java_java高级.md\":\"23782d1a\",\"java_java基础.md\":\"86d67c77\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"VitePress\",\"description\":\"A VitePress site\",\"base\":\"/notebook/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"algolia\":{\"appId\":\"DW7O63I9IR\",\"apiKey\":\"f8ed758cdb288a8b06542bc35923c1a1\",\"indexName\":\"notebook\"},\"sidebar\":[{\"text\":\"Java\",\"collapsed\":true,\"items\":[{\"text\":\"Java基础\",\"link\":\"/Java/Java基础\"},{\"text\":\"Java新特性\",\"link\":\"/Java/Java新特性\"},{\"text\":\"Java进阶\",\"link\":\"/Java/Java进阶\"},{\"text\":\"Java集合\",\"link\":\"/Java/Java集合\"},{\"text\":\"Java高级\",\"link\":\"/Java/Java高级\"}]},{\"text\":\"Linux\",\"collapsed\":true,\"items\":[{\"text\":\"Linux基础\",\"link\":\"/Linux/Linux基础\"},{\"text\":\"Linux新特性\",\"link\":\"/Linux/Linux进阶\"},{\"text\":\"Shell脚本\",\"link\":\"/Linux/Shell\"},{\"text\":\"实用脚本\",\"link\":\"/Linux/实用脚本\"},{\"text\":\"软件部署\",\"link\":\"/Linux/软件部署\"}]},{\"text\":\"Nginx\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/Nginx/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/Nginx/进阶篇\"},{\"text\":\"实战篇\",\"link\":\"/Nginx/实战篇\"},{\"text\":\"面试篇\",\"link\":\"/Nginx/面试篇\"}]},{\"text\":\"SSM\",\"collapsed\":true,\"items\":[{\"text\":\"Maven\",\"link\":\"/SSM/Maven\"},{\"text\":\"Spring\",\"link\":\"/SSM/Spring\"},{\"text\":\"SpringMVC\",\"link\":\"/SSM/SpringMVC\"},{\"text\":\"SpringBatch\",\"link\":\"/SSM/SpringBatch\"}]},{\"text\":\"SpringBoot\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/3、SpringBoot/基础篇\"},{\"text\":\"应用篇\",\"link\":\"/3、SpringBoot/应用篇\"},{\"text\":\"新特性\",\"link\":\"/3、SpringBoot/新特性\"},{\"text\":\"运维&原理\",\"link\":\"/3、SpringBoot/运维&原理\"}]},{\"text\":\"SpringCloud\",\"collapsed\":true,\"items\":[{\"text\":\"SpringCloud\",\"link\":\"/4、微服务/进阶\"},{\"text\":\"Sentinel\",\"link\":\"/4、微服务/必备/Sentinel\"}]},{\"text\":\"SpringSecurity\",\"collapsed\":true,\"items\":[{\"text\":\"SpringSecurity基础篇\",\"link\":\"/4、微服务/SpringSecurity/基础篇\"},{\"text\":\"SpringSecurity进阶篇\",\"link\":\"/4、微服务/SpringSecurity/进阶篇\"},{\"text\":\"SpringSecurity高级篇\",\"link\":\"/4、微服务/SpringSecurity/高级篇\"}]},{\"text\":\"Mybatis & MybatisPlus\",\"collapsed\":true,\"items\":[{\"text\":\"Mybatis\",\"link\":\"/Mybatis&MybatisPlus/Mybatis\"},{\"text\":\"MybatisPlus\",\"link\":\"/Mybatis&MybatisPlus/MybatisPlus\"},{\"text\":\"JPA\",\"link\":\"/Mybatis&MybatisPlus/JPA\"}]},{\"text\":\"Git & ChatGPT\",\"collapsed\":true,\"items\":[{\"text\":\"Git\",\"link\":\"/5、运维/Git\"},{\"text\":\"Github\",\"link\":\"/5、运维/Github\"},{\"text\":\"ChatGPT\",\"link\":\"/5、运维/ChatGPT\"},{\"text\":\"Jenkins\",\"link\":\"/5、运维/Jenkins\"},{\"text\":\"Netty\",\"link\":\"/5、运维/Netty\"}]},{\"text\":\"数据库\",\"collapsed\":true,\"items\":[{\"text\":\"MySQL\",\"collapsed\":true,\"items\":[{\"text\":\"MySQL基础\",\"link\":\"/2、数据库/MySQL/MySQL核心/基础\"},{\"text\":\"MySQL进阶\",\"link\":\"/2、数据库/MySQL/MySQL核心/进阶\"},{\"text\":\"MySQL优化\",\"link\":\"/2、数据库/MySQL/MySQL核心/优化\"},{\"text\":\"MySQL设计\",\"link\":\"/2、数据库/MySQL/MySQL核心/设计\"},{\"text\":\"MySQL运维\",\"link\":\"/2、数据库/MySQL/MySQL核心/运维\"},{\"text\":\"分库分表\",\"link\":\"/2、数据库/MySQL/分库分表\"}]},{\"text\":\"Redis\",\"collapsed\":true,\"items\":[{\"text\":\"Redis基础\",\"link\":\"/2、数据库/Redis/Redis基础\"},{\"text\":\"Redis优化\",\"link\":\"/2、数据库/Redis/Redis优化\"},{\"text\":\"Redis原理\",\"link\":\"/2、数据库/Redis/Redis原理\"},{\"text\":\"Redis高级\",\"link\":\"/2、数据库/Redis/Redis高级\"},{\"text\":\"Redis实战\",\"link\":\"/2、数据库/Redis/Redis实战\"},{\"text\":\"本地缓存\",\"link\":\"/2、数据库/Redis/本地缓存\"}]},{\"text\":\"MongoDB\",\"collapsed\":true,\"items\":[{\"text\":\"MongoDB基础\",\"link\":\"/2、数据库/MongoDB/基础\"},{\"text\":\"MongoDB进阶\",\"link\":\"/2、数据库/MongoDB/整合\"}]},{\"text\":\"ElasticSearch\",\"collapsed\":true,\"items\":[{\"text\":\"ES基础\",\"link\":\"/2、数据库/ElasticSearch/1、ES基础\"},{\"text\":\"ES高级\",\"link\":\"/2、数据库/ElasticSearch/3、ES高级\"}]},{\"text\":\"InfluxDB\",\"link\":\"/2、数据库/influxdb\"},{\"text\":\"Neo4j\",\"link\":\"/2、数据库/Neo4j\"}]},{\"text\":\"高并发 & 秒杀 & 分布式\",\"collapsed\":true,\"items\":[{\"text\":\"分布式理论\",\"link\":\"/三高/分布式\"},{\"text\":\"分布式锁\",\"link\":\"/4、微服务/必备/分布式锁\"},{\"text\":\"秒杀\",\"link\":\"/三高/秒杀\"},{\"text\":\"高可用\",\"link\":\"/三高/高可用\"},{\"text\":\"高并发\",\"link\":\"/三高/高并发\"}]},{\"text\":\"云原生\",\"collapsed\":true,\"items\":[{\"text\":\"Docker\",\"link\":\"/云原生/Docker\"},{\"text\":\"K8S\",\"link\":\"/云原生/K8S\"}]},{\"text\":\"可视化 & 监控\",\"collapsed\":true,\"items\":[{\"text\":\"监控基础\",\"link\":\"/可视化 & 监控/监控基础\"},{\"text\":\"监控进阶\",\"link\":\"/可视化 & 监控/监控进阶\"},{\"text\":\"可视化大屏\",\"link\":\"/可视化 & 监控/可视化大屏\"},{\"text\":\"Zabbix\",\"link\":\"/可视化 & 监控/Zabbix\"}]},{\"text\":\"学前端\",\"collapsed\":true,\"items\":[{\"text\":\"HTML+CSS\",\"collapsed\":true,\"items\":[{\"text\":\"HTML基础\",\"link\":\"/1、学前端/1、HTML+CSS/HTML基础\"},{\"text\":\"CSS基础\",\"link\":\"/1、学前端/1、HTML+CSS/CSS基础\"},{\"text\":\"网页进阶\",\"link\":\"/1、学前端/1、HTML+CSS/网页进阶\"}]},{\"text\":\"JS+TS\",\"collapsed\":true,\"items\":[{\"text\":\"JS基础\",\"link\":\"/1、学前端/2、JS+TS/JS 基础\"},{\"text\":\"JS进阶\",\"link\":\"/1、学前端/2、JS+TS/JS 进阶\"},{\"text\":\"ES6基础\",\"link\":\"/1、学前端/2、JS+TS/ES6 基础\"},{\"text\":\"ES6进阶\",\"link\":\"/1、学前端/2、JS+TS/ES6 进阶\"},{\"text\":\"TS基础\",\"link\":\"/1、学前端/2、JS+TS/TypeScript\"}]},{\"text\":\"NodeJS\",\"collapsed\":true,\"items\":[{\"text\":\"Node基础\",\"link\":\"/1、学前端/4、Node/基础篇\"},{\"text\":\"Node进阶\",\"link\":\"/1、学前端/4、Node/进阶篇\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/4、Node/项目实战\"}]},{\"text\":\"Vue\",\"collapsed\":true,\"items\":[{\"text\":\"Vue3进阶\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3进阶\"},{\"text\":\"Vue3高级\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3高级\"},{\"text\":\"Vue3新语法\",\"link\":\"/1、学前端/3、Vue/Vue3/Vue3新语法\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/3、Vue/Vue2/Vue2项目\"}]},{\"text\":\"小程序\",\"collapsed\":true,\"items\":[{\"text\":\"小程序基础\",\"link\":\"/1、学前端/5、小程序/微信小程序\"},{\"text\":\"小程序优化\",\"link\":\"/1、学前端/5、小程序/小程序优化\"},{\"text\":\"uniapp\",\"link\":\"/1、学前端/5、小程序/uniapp\"},{\"text\":\"项目实战\",\"link\":\"/1、学前端/5、小程序/小程序项目\"}]}]},{\"text\":\"计算机基础\",\"collapsed\":true,\"items\":[{\"text\":\"数据结构\",\"link\":\"/计算机基础/数据结构/基础篇\"},{\"text\":\"操作系统\",\"link\":\"/计算机基础/计算机基础/操作系统\"},{\"text\":\"设计模式\",\"link\":\"/计算机基础/设计模式/基础篇\"},{\"text\":\"计算机网络\",\"link\":\"/计算机基础/计算机网络/网络基础\"},{\"text\":\"UML\",\"link\":\"/计算机基础/设计模式/UML\"},{\"text\":\"LeetCode\",\"link\":\"/计算机基础/算法/LeetCode\"}]},{\"text\":\"项目实战\",\"collapsed\":true,\"items\":[{\"text\":\"云尚办公\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/云尚办公/基础篇\"}]},{\"text\":\"小兔鲜\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/小兔鲜/基础篇\"},{\"text\":\"进阶篇1\",\"link\":\"/项目实战/小兔鲜/进阶篇1\"},{\"text\":\"进阶篇2\",\"link\":\"/项目实战/小兔鲜/进阶篇2\"}]},{\"text\":\"地图\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/百度地图/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/项目实战/百度地图/进阶篇\"}]},{\"text\":\"苍穹外卖\",\"collapsed\":true,\"items\":[{\"text\":\"进阶篇\",\"link\":\"/项目实战/苍穹外卖/进阶篇\"}]},{\"text\":\"黑马头条\",\"collapsed\":true,\"items\":[{\"text\":\"基础篇\",\"link\":\"/项目实战/黑马头条/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/项目实战/黑马头条/进阶篇\"},{\"text\":\"进阶篇2\",\"link\":\"/项目实战/黑马头条/进阶篇2\"},{\"text\":\"高级篇\",\"link\":\"/项目实战/黑马头条/高级篇\"}]},{\"text\":\"支付\",\"link\":\"/项目实战/支付\"},{\"text\":\"项目推荐\",\"link\":\"/项目实战/项目推荐\"}]},{\"text\":\"团队成员\",\"link\":\"/team\"}],\"siteTitle\":\"任硕的文档\",\"logo\":\"/Vue.png\",\"nav\":[{\"text\":\"Java学前端\",\"items\":[{\"items\":[{\"text\":\"HTML+JS\",\"link\":\"/Java学前端/HTML+JS\"},{\"text\":\"CSS\",\"link\":\"/Java学前端/CSS\"},{\"text\":\"Vue2+组件\",\"link\":\"/Java学前端/Vue2+组件\"},{\"text\":\"Vue3+组件\",\"link\":\"/Java学前端/Vue3+组件\"},{\"text\":\"React\",\"link\":\"/Java学前端/React\"}]}],\"activeMatch\":\"/Java/\"},{\"text\":\"软件测试\",\"items\":[{\"items\":[{\"text\":\"测试基础\",\"link\":\"/软件测试/测试基础\"},{\"text\":\"压力测试\",\"link\":\"/软件测试/压力测试\"}]}]},{\"text\":\"多线程\",\"items\":[{\"items\":[{\"text\":\"基础篇\",\"link\":\"/并发 & 多线程/基础篇\"},{\"text\":\"进阶篇\",\"link\":\"/并发 & 多线程/并发完善\"}]}]},{\"text\":\"开发工具\",\"items\":[{\"items\":[{\"text\":\"Chrome\",\"link\":\"/IDEA/Chrome\"},{\"text\":\"IDEA基础\",\"link\":\"/IDEA/IDEA基础\"},{\"text\":\"IDEA插件\",\"link\":\"/IDEA/IDEA插件\"},{\"text\":\"VS Code\",\"link\":\"/IDEA/VS Code\"}]}]},{\"text\":\"消息中间件\",\"items\":[{\"items\":[{\"text\":\"RabbitMQ\",\"link\":\"/消息中间件/RabbitMQ\"},{\"text\":\"RocketMQ\",\"link\":\"/消息中间件/RocketMQ\"},{\"text\":\"Kafka\",\"link\":\"/消息中间件/Kafka\"},{\"text\":\"Canal\",\"link\":\"/消息中间件/Canal\"}]}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/renshuo123/renshuo123.github.io\"},{\"icon\":\"twitter\",\"link\":\"#\"},{\"icon\":{\"svg\":\"<svg t=\\\"1676028692954\\\" class=\\\"icon\\\" ...</path></svg>\"},\"link\":\"https://github.com/\"}]},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":false}");</script>
    
  </body>
</html>